
Ferramenta Go e template Nuclei para testar James Kettle's (CVE-2025-32094) HTTP/1.1 must die: the desync endgame
Este repositório contém ferramentas de segurança defensiva para detectar vulnerabilidades de contrabando de requisições HTTP/1 (dessincronização) com base na pesquisa inovadora de James Kettle da PortSwigger.
Este trabalho é diretamente inspirado e implementa técnicas de:
Os padrões de ataque, técnicas e métodos de detecção implementados nestas ferramentas são baseados no trabalho pioneiro de James Kettle que revelou falhas fundamentais na implementação do protocolo HTTP/1.1 em grandes provedores de infraestrutura web.
A pesquisa de James Kettle demonstrou vulnerabilidades que afetam:
As definições ambíguas de limites de requisição do HTTP/1.1 criam o que James Kettle chamou de "ambiguidade extrema" sobre onde as requisições começam e terminam. Isso leva a discrepâncias de interpretação entre servidores front-end e back-end, possibilitando ataques sofisticados de contrabando de requisições. Essas ferramentas ajudam a identificar tais vulnerabilidades para testes de segurança defensiva.
http1-desync-test.go)Um testador abrangente de vulnerabilidade de dessincronização HTTP/1 que implementa múltiplos padrões de ataque.
# Clone the repository
git clone https://github.com/nconsolo/echteeteepee.git
cd echteeteepee
# Install dependencies
go mod download
# Build the tool
go build -o http1-desync-test http1-desync-test.go
# Test all attack patterns
./http1-desync-test -target https://example.com
# Test specific attack pattern
./http1-desync-test -target https://example.com -test vh
# Enable verbose output
./http1-desync-test -target https://example.com -verbose
# Set custom timeout
./http1-desync-test -target https://example.com -timeout 10s
-target: URL alvo (obrigatório)-test: Tipo de teste: all, vh, 0cl, expect, double, clte (padrão: all)-timeout: Timeout da requisição (padrão: 5s)-verbose: Habilita saída detalhada para ver requisições/respostas brutasnuclei-templates/http1-desync.yaml)Template de varredura automatizada para Nuclei detectar vulnerabilidades de dessincronização HTTP/1 em escala.
# Install Nuclei (if not already installed)
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# Copy template to Nuclei templates directory
cp nuclei-templates/http1-desync.yaml ~/.nuclei-templates/
# Scan single target
nuclei -u https://example.com -t nuclei-templates/http1-desync.yaml
# Scan multiple targets
nuclei -l targets.txt -t nuclei-templates/http1-desync.yaml
# Scan with rate limiting
nuclei -u https://example.com -t nuclei-templates/http1-desync.yaml -rl 10
Todos os padrões de ataque são baseados nas descobertas de pesquisa de James Kettle e em técnicas de exploração comprovadas.
Fonte: Pesquisa "HTTP/1 Must Die" de James Kettle
Explora discrepâncias onde o proxy front-end vê um limite de requisição enquanto o servidor back-end vê outro. O payload do ataque incorpora uma requisição oculta dentro do que parece ser dados de cabeçalho para o front-end, mas é interpretado como uma requisição separada pelo back-end.
Exemplo da pesquisa: Usado para demonstrar diferenças de interpretação em grandes provedores de CDN.
Fonte: Descobertas de vulnerabilidade de James Kettle em IIS e T-Mobile
Aproveita diferentes interpretações dos cabeçalhos Content-Length: 0 entre servidores. Alguns servidores ignoram o corpo quando CL=0, enquanto outros ainda o processam, levando a confusão no limite da requisição.
Impacto no mundo real: Explorado com sucesso contra servidores IIS e infraestrutura da T-Mobile.
Fonte: Pesquisa de James Kettle sobre T-Mobile e LastPass
Explora o mecanismo Expect: 100-continue onde front-end e back-end lidam com a continuação de forma diferente. Isso cria oportunidades para contrabandear requisições enquanto o front-end aguarda uma resposta 100-continue.
Contexto de pesquisa: Demonstrado contra sistemas de autenticação da T-Mobile e LastPass.
Fonte: Metodologia avançada de dessincronização de James Kettle
Encadeia múltiplos ataques de dessincronização para envenenar a fila de respostas, permitindo que atacantes controlem quais respostas outros usuários recebem. Isso representa um dos ataques mais sofisticados da pesquisa.
Descoberta crítica: Permite a tomada completa do site ao servir respostas maliciosas a usuários legítimos.
Fonte: Pesquisa central sobre ambiguidade HTTP/1.1 por James Kettle
Explora conflitos entre os cabeçalhos Content-Length e Transfer-Encoding: chunked. Diferentes servidores priorizam esses cabeçalhos de forma diferente, criando discrepâncias de interpretação que permitem o contrabando de requisições.
Fundamento: Esses conflitos representam a falha fundamental que James Kettle identificou na especificação HTTP/1.1.
Com base na metodologia de pesquisa de James Kettle, as ferramentas procuram:
Seguindo a classificação de impacto de James Kettle:
Estas ferramentas são projetadas para:
NÃO use estas ferramentas:
Seguindo a metodologia de James Kettle, as ferramentas mantêm conexões HTTP/1.1 persistentes para testar adequadamente as condições de dessincronização. Cada teste cria uma única conexão TCP e envia múltiplas requisições para observar diferenças de interpretação.
Os payloads de ataque são cuidadosamente elaborados com base nos padrões exatos que James Kettle usou em sua pesquisa, garantindo compatibilidade com os comportamentos de servidor que ele documentou.
A lógica de detecção implementa os mesmos indicadores que James Kettle usou para identificar ataques de dessincronização bem-sucedidos durante sua pesquisa de recompensas por bugs de mais de $350K.
Com base nas descobertas e recomendações de James Kettle:
Licença MIT - Consulte o arquivo LICENSE para obter detalhes
Estas ferramentas são fornecidas apenas para fins educacionais e de segurança defensiva. Os usuários são responsáveis por garantir que possuem a devida autorização antes de testar qualquer sistema. Os autores não assumem nenhuma responsabilidade por uso indevido ou danos causados por estas ferramentas.