
Pädagogische Simulation der Ausnutzung von CVE-2024-4577 PHP CGI RCE unter Windows, einschließlich Payload-Entwicklung, Ransomware-Bereitstellung und forensischer Protokollanalyse für Sicherheitsschulungen.
CVE-2024-4577 ist eine Sicherheitslücke, die PHP-Server in den folgenden Versionen betrifft:
Bei dieser Sicherheitslücke handelt es sich um einen Remote-Code-Ausführungsfehler (RCE), der bei Verwendung von PHP CGI (Common Gateway Interface) auf Windows-Servern auftritt. Das Problem entsteht, weil Windows aufgrund der Verwendung der „Best Fit“-Zeichenzuordnung in einigen Spracheinstellungen bestimmte Zeichen falsch interpretiert. In diesem Fall interpretiert das PHP-CGI-Modul schädliche Zeichen als PHP-Optionen, sodass Angreifer bösartige Befehle auf dem Server ausführen können.
Erster Angriffsvektor:
Um die Sicherheitslücke auszunutzen, hängen Sie die folgende Zeichenfolge an die URL der anfälligen Website an:
?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
Verwenden Sie Burp Suite, um diese Anfrage abzufangen und an den Repeater zu senden.
Ändern Sie die Anfragemethode: Wandeln Sie die abgefangene Anfrage in eine POST-Methode um und führen Sie einen einfachen PHP-Code aus, zum Beispiel:
<?php phpinfo();
Wenn die Sicherheitslücke besteht, zeigt die Ausgabe Informationen zur PHP-Version an.
Je nach den Zielen des Angreifers können verschiedene Methoden angewendet werden. Meine bevorzugte Methode bestand darin, mit Burp Suite eine Ausführung im Windows-Startverzeichnis zu definieren. Ich habe das Skript reverseshell.ps1 in eine ausführbare Datei (exe) umgewandelt und dort platziert.
In ähnlicher Weise habe ich die Datei ransomware.ps1 auf das System hochgeladen und erfolgreich Dokumente exfiltriert, wobei nur ihre verschlüsselten Versionen zurückblieben.
Bevor der Angriff beginnt, müssen die 4688-Protokolle aktiviert werden. Bei der Analyse der 4688-Sicherheitsprotokolle auf meinem Windows-Rechner stellte ich fest, dass der Angriff von Apache unter XAMPP ausging. Als ich die Access.log-Dateien überprüfte, stieß ich auf eine anomale Anfrage, die einen 200-Statuscode zurückgab, was mich veranlasste, nach dieser URL in meinem Browser zu suchen. Ich identifizierte die Sicherheitslücke und ergriff Vorsichtsmaßnahmen, wie die Aktualisierung der PHP-Version oder die Deaktivierung der PHP-CGI-Funktion.
Da der von mir erstellte Ransomware nicht verschleiert war, ist mein Code in den PowerShell-Protokollen sichtbar. Dies zeigt, wie ich die Daten verschlüsselt habe. Um meine Daten wiederherzustellen, führe ich die Datei encoded.ps1 aus.
Diese Simulation verdeutlicht die potenziellen Risiken im Zusammenhang mit CVE-2024-4577 und unterstreicht die Bedeutung der Sicherung von PHP-Installationen. Durch die Aktualisierung von PHP und die Vermeidung von Fehlkonfigurationen der CGI-Einstellungen können solche Sicherheitslücken wirksam reduziert werden.