mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/ssrf-server-side-request-forgery/url-for
This commit is contained in:
parent
3af7863927
commit
9c2f79edd3
@ -146,7 +146,7 @@ next={domain}&next=attacker.com
|
||||
```
|
||||
### Bypass di Percorsi ed Estensioni
|
||||
|
||||
Se è richiesto che l'URL debba terminare con un percorso o un'estensione, o debba contenere un percorso, puoi provare uno dei seguenti bypass:
|
||||
Se è richiesto che l'URL termini con un percorso o un'estensione, o debba contenere un percorso, puoi provare uno dei seguenti bypass:
|
||||
```
|
||||
https://metadata/vulerable/path#/expected/path
|
||||
https://metadata/vulerable/path#.extension
|
||||
@ -154,7 +154,7 @@ https://metadata/expected/path/..%2f..%2f/vulnerable/path
|
||||
```
|
||||
### Fuzzing
|
||||
|
||||
Lo strumento [**recollapse**](https://github.com/0xacb/recollapse) può generare variazioni da un input dato per cercare di bypassare il regex utilizzato. Controlla [**questo post**](https://0xacb.com/2022/11/21/recollapse/) anche per ulteriori informazioni.
|
||||
Lo strumento [**recollapse**](https://github.com/0xacb/recollapse) può generare variazioni da un input dato per cercare di bypassare il regex utilizzato. Controlla [**questo post**](https://0xacb.com/2022/11/21/recollapse/) per ulteriori informazioni.
|
||||
|
||||
### Automatic Custom Wordlists
|
||||
|
||||
@ -193,13 +193,13 @@ HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
|
||||
|
||||
### Blackslash-trick
|
||||
|
||||
Il _backslash-trick_ sfrutta una differenza tra il [WHATWG URL Standard](https://url.spec.whatwg.org/#url-parsing) e [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Mentre RFC3986 è un framework generale per gli URI, WHATWG è specifico per gli URL web ed è adottato dai browser moderni. La distinzione chiave risiede nel riconoscimento del backslash (`\`) come equivalente alla barra obliqua (`/`) nello standard WHATWG, influenzando il modo in cui gli URL vengono analizzati, segnando specificamente la transizione dal nome host al percorso in un URL.
|
||||
Il _backslash-trick_ sfrutta una differenza tra il [WHATWG URL Standard](https://url.spec.whatwg.org/#url-parsing) e [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Mentre RFC3986 è un framework generale per gli URI, WHATWG è specifico per gli URL web ed è adottato dai browser moderni. La distinzione chiave risiede nel riconoscimento del backslash (`\`) da parte dello standard WHATWG come equivalente alla barra obliqua (`/`), influenzando il modo in cui gli URL vengono analizzati, segnando specificamente la transizione dal nome host al percorso in un URL.
|
||||
|
||||

|
||||
|
||||
### Parentesi quadra sinistra
|
||||
|
||||
Il carattere “parentesi quadra sinistra” `[` nel segmento userinfo può causare a UriComponentsBuilder di Spring di restituire un valore di hostname che differisce da quello dei browser: [https://example.com\[@attacker.com](https://portswigger.net/url-cheat-sheet#id=1da2f627d702248b9e61cc23912d2c729e52f878)
|
||||
Il carattere “parentesi quadra sinistra” `[` nel segmento userinfo può causare a UriComponentsBuilder di Spring di restituire un valore di hostname che differisce dai browser: [https://example.com\[@attacker.com](https://portswigger.net/url-cheat-sheet#id=1da2f627d702248b9e61cc23912d2c729e52f878)
|
||||
|
||||
### Altre Confusioni
|
||||
|
||||
@ -207,10 +207,42 @@ Il carattere “parentesi quadra sinistra” `[` nel segmento userinfo può caus
|
||||
|
||||
immagine da [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
|
||||
|
||||
### IPv6 Zone Identifier (%25) Trick
|
||||
|
||||
I moderni parser URL che supportano RFC 6874 consentono agli indirizzi IPv6 *link-local* di includere un **zone identifier** dopo un segno di percentuale. Alcuni filtri di sicurezza non sono a conoscenza di questa sintassi e rimuoveranno solo i letterali IPv6 racchiusi tra parentesi quadre, permettendo al payload seguente di raggiungere un'interfaccia interna:
|
||||
```text
|
||||
http://[fe80::1%25eth0]/ # %25 = encoded '%', interpreted as fe80::1%eth0
|
||||
http://[fe80::a9ff:fe00:1%25en0]/ # Another example (macOS style)
|
||||
```
|
||||
Se l'applicazione target convalida che l'host *non* è `fe80::1` ma smette di analizzare al `%`, potrebbe trattare erroneamente la richiesta come esterna. Normalizza sempre l'indirizzo **prima** di qualsiasi decisione di sicurezza o rimuovi completamente l'ID di zona opzionale.
|
||||
|
||||
### Recent Library Parsing CVEs (2022–2025)
|
||||
|
||||
Un certo numero di framework mainstream ha sofferto di problemi di corrispondenza del nome host che possono essere sfruttati per SSRF una volta che la convalida dell'URL è stata bypassata con i trucchi elencati sopra:
|
||||
|
||||
| Anno | CVE | Componente | Sintesi del bug | PoC minima |
|
||||
|------|-----|-----------|--------------|-------------|
|
||||
| 2024 | CVE-2024-22243 / ‑22262 | Spring `UriComponentsBuilder` | `[` non è consentito nella sezione *userinfo*, quindi `https://example.com\[@internal` è analizzato come host `example.com` da Spring ma come `internal` dai browser, abilitando open-redirect & SSRF quando vengono utilizzate le liste di autorizzazione degli host. Aggiorna a Spring 5.3.34 / 6.0.19 / 6.1.6+. |
|
||||
| 2023 | CVE-2023-27592 | **urllib3** <1.26.15 | La confusione del backslash ha permesso a `http://example.com\\@169.254.169.254/` di bypassare i filtri host che si dividono su `@`. |
|
||||
| 2022 | CVE-2022-3602 | OpenSSL | La verifica del nome host è stata saltata quando il nome è suffisso con un `.` (confusione del dominio senza punto). |
|
||||
|
||||
Quando dipendi da parser URL di terze parti, **confronta l'host canonico restituito dalla libreria di cui ti fidi con la stringa grezza fornita dall'utente** per rilevare queste classi di problemi.
|
||||
|
||||
### Payload-generation helpers (2024+)
|
||||
|
||||
Creare grandi elenchi di parole personalizzati a mano è ingombrante. Lo strumento open-source **SSRF-PayloadMaker** (Python 3) può ora generare automaticamente *80 k+* combinazioni di manipolazione degli host, inclusi codifiche miste, downgrade forzato a HTTP e varianti di backslash:
|
||||
```bash
|
||||
# Generate every known bypass that transforms the allowed host example.com to attacker.com
|
||||
python3 ssrf_maker.py --allowed example.com --attacker attacker.com -A -o payloads.txt
|
||||
```
|
||||
La lista risultante può essere inserita direttamente in Burp Intruder o `ffuf`.
|
||||
|
||||
## Riferimenti
|
||||
|
||||
- [https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25](https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25)
|
||||
- [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md)
|
||||
- [https://portswigger.net/research/new-crazy-payloads-in-the-url-validation-bypass-cheat-sheet](https://portswigger.net/research/new-crazy-payloads-in-the-url-validation-bypass-cheat-sheet)
|
||||
- [https://nvd.nist.gov/vuln/detail/CVE-2024-22243](https://nvd.nist.gov/vuln/detail/CVE-2024-22243)
|
||||
- [https://github.com/hsynuzm/SSRF-PayloadMaker](https://github.com/hsynuzm/SSRF-PayloadMaker)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user