
Go tool and Nuclei template for testing James Kettle's (CVE-2025-32094) HTTP/1.1 must die: the desync endgame
This repository contains defensive security tools for detecting HTTP/1 request smuggling (desync) vulnerabilities based on groundbreaking research by James Kettle of PortSwigger.
This work is directly inspired by and implements techniques from:
The attack patterns, techniques, and detection methods implemented in these tools are based on James Kettle's pioneering work that revealed fundamental flaws in HTTP/1.1 protocol implementation across major web infrastructure providers.
James Kettle's research demonstrated vulnerabilities affecting:
HTTP/1.1's ambiguous request boundary definitions create what James Kettle termed "extreme ambiguity" about where requests begin and end. This leads to parser discrepancies between front-end and back-end servers, enabling sophisticated request smuggling attacks. These tools help identify such vulnerabilities for defensive security testing.
http1-desync-test.go)A comprehensive HTTP/1 desync vulnerability tester that implements multiple attack patterns.
# 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: Target URL (required)-test: Test type: all, vh, 0cl, expect, double, clte (default: all)-timeout: Request timeout (default: 5s)-verbose: Enable verbose output to see raw requests/responsesnuclei-templates/http1-desync.yaml)Automated scanning template for Nuclei to detect HTTP/1 desync vulnerabilities at scale.
# 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
All attack patterns are based on James Kettle's research findings and proven exploit techniques.
Source: James Kettle's "HTTP/1 Must Die" research
Exploits discrepancies where the front-end proxy sees one request boundary while the back-end server sees another. The attack payload embeds a hidden request within what appears to be header data to the front-end, but is interpreted as a separate request by the back-end.
Example from research: Used to demonstrate parser differences in major CDN providers.
Source: James Kettle's IIS and T-Mobile vulnerability findings
Leverages different interpretations of Content-Length: 0 headers between servers. Some servers ignore the body when CL=0, while others still process it, leading to request boundary confusion.
Real-world impact: Successfully exploited against IIS servers and T-Mobile infrastructure.
Source: James Kettle's T-Mobile and LastPass research
Exploits the Expect: 100-continue mechanism where front-end and back-end handle the continuation differently. This creates opportunities to smuggle requests while the front-end waits for a 100-continue response.
Research context: Demonstrated against T-Mobile and LastPass authentication systems.
Source: James Kettle's advanced desync methodology
Chains multiple desync attacks to poison the response queue, allowing attackers to control what responses other users receive. This represents one of the most sophisticated attacks in the research.
Critical finding: Enables complete site takeover by serving malicious responses to legitimate users.
Source: Core HTTP/1.1 ambiguity research by James Kettle
Exploits conflicts between Content-Length and Transfer-Encoding: chunked headers. Different servers prioritize these headers differently, creating parser discrepancies that enable request smuggling.
Foundation: These conflicts represent the fundamental flaw James Kettle identified in HTTP/1.1 specification.
Based on James Kettle's research methodology, the tools look for:
Following James Kettle's impact classification:
These tools are designed for:
DO NOT use these tools:
Following James Kettle's methodology, the tools maintain persistent HTTP/1.1 connections to properly test for desync conditions. Each test creates a single TCP connection and sends multiple requests to observe parsing differences.
Attack payloads are carefully crafted based on the exact patterns James Kettle used in his research, ensuring compatibility with the server behaviors he documented.
The detection logic implements the same indicators James Kettle used to identify successful desync attacks during his $350K+ bug bounty research.
Based on James Kettle's findings and recommendations:
MIT License - See LICENSE file for details
These tools are provided for educational and defensive security purposes only. Users are responsible for ensuring they have proper authorization before testing any systems. The authors assume no liability for misuse or damage caused by these tools.