
Laboratório baseado em Docker para Apache CVE-2021-41773 path traversal e exploração RCE com script de exploit em Python, demonstrando análise de vulnerabilidade e estratégias de mitigação.
Este repositório reproduz uma vulnerabilidade divulgada publicamente e corrigida em um ambiente de laboratório Docker controlado para fins educacionais e de pesquisa.
O ambiente é intencionalmente vulnerável e deve ser implantado apenas em ambientes de teste isolados. Não tente explorar sistemas sem autorização explícita.
O objetivo deste projeto é demonstrar análise de vulnerabilidade, exploração e estratégias de mitigação.
Path Traversal e Execução Remota de Código
# Navegue até a pasta do projeto
cd Apache-CVE-2021-41773
# Valide a sintaxe do compose
docker compose config
# Inicie o laboratório
docker compose up -d --build
# Verifique se tudo está funcionando
docker compose ps
O Apache 2.4.49 introduziu um bug na normalização de caminhos de URL. Sequências codificadas como .%2e (equivalente a ..) não são devidamente sanitizadas, permitindo que um atacante percorra a árvore de diretórios além do DocumentRoot.
Se o mod_cgi estiver habilitado e o diretório raiz (/) estiver configurado com Require all granted, um atacante pode:
/bin/sh (RCE)exploit.py)Sem dependências externas — utiliza apenas a biblioteca padrão do Python.
Auto python exploit.py Verificar vulnerabilidade + executar id como demonstração
Read file python exploit.py -f /etc/shadow Ler qualquer arquivo via RCE
RCE python exploit.py -c "whoami" Executar um único comando
Shell python exploit.py -i Pseudo-shell interativo
Custom target python exploit.py -u http://target:8888 Alvejar um host remoto
Primeiramente, verificamos que o ambiente está vulnerável
Como esperado, o comando retorna o id uid=0(root) gid=0(root) groups=0(root)
Vamos criar um reverse shell :
Estamos logados como root
Como você pode ver, há uma configuração incorreta em /proc/1/environ, obtivemos a senha do SQL Isso revela segredos expostos causados por configuração insegura do contêiner
Usando as credenciais extraídas, nos conectamos ao banco de dados MySQL e imprimimos os dados armazenados

Nunca reproduza essas configurações em um ambiente de produção.