本仓库包含用于检测 HTTP/1 请求走私(反同步)漏洞的防御性安全工具,其基础是 PortSwigger 的 James Kettle 所进行的开创性研究。
本作品直接受以下研究启发,并实现了其中的技术:
这些工具中实现的攻击模式、技术和检测方法均基于 James Kettle 的开创性工作,他揭示了各大 Web 基础设施提供商在 HTTP/1.1 协议实现中存在的根本性缺陷。
James Kettle 的研究证明了影响以下机构的漏洞:
HTTP/1.1 对请求边界的定义存在歧义,对于请求的开始和结束位置,造成了 James Kettle 所称的「极端歧义」。这导致前端与后端服务器之间的解析器存在差异,从而可实现复杂的请求走私攻击。这些工具有助于识别此类漏洞,用于防御性安全测试。
http1-desync-test.go)一个全面的 HTTP/1 反同步漏洞测试器,实现了多种攻击模式。
# 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(必需)-test:测试类型:all、vh、0cl、expect、double、clte(默认:all)-timeout:请求超时(默认:5s)-verbose:启用详细输出以查看原始请求/响应nuclei-templates/http1-desync.yaml)用于 Nuclei 的自动化扫描模板,可大规模检测 HTTP/1 反同步漏洞。
# 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
所有攻击模式均基于 James Kettle 的研究成果和经过验证的利用技术。
来源:James Kettle 的《HTTP/1 Must Die》研究
利用前端代理与后端服务器看到不同请求边界的差异。攻击载荷在前端看来是标头数据,但其中嵌入了隐藏请求,后端则会将其解释为独立的请求。
研究实例:用于演示主流 CDN 提供商中的解析器差异。
来源:James Kettle 发现的 IIS 和 T-Mobile 漏洞
利用服务器之间对 Content-Length: 0 标头的不同解释。当 CL=0 时,某些服务器会忽略请求体,而另一些服务器仍会处理它,从而导致请求边界混淆。
实际影响:已成功利用于 IIS 服务器和 T-Mobile 基础设施。
来源:James Kettle 针对 T-Mobile 和 LastPass 的研究
利用 Expect: 100-continue 机制中前端与后端对继续处理方式的不同。这为在前端等待 100-continue 响应期间走私请求创造了机会。
研究背景:已针对 T-Mobile 和 LastPass 的认证系统进行了演示。
来源:James Kettle 的高级反同步方法
通过串联多个反同步攻击来投毒响应队列,使攻击者能够控制其他用户收到的响应。这是该研究中最复杂的攻击之一。
关键发现:可通过向合法用户提供恶意响应来实现完全接管网站。
来源:James Kettle 关于 HTTP/1.1 核心歧义性的研究
利用 Content-Length 与 Transfer-Encoding: chunked 标头之间的冲突。不同服务器对这些标头的优先级处理不同,从而造成解析器差异,进而实现请求走私。
基础:这些冲突代表了 James Kettle 在 HTTP/1.1 规范中发现的根本性缺陷。
基于 James Kettle 的研究方法,这些工具会寻找以下迹象:
遵循 James Kettle 的影响分类:
这些工具专为以下用途设计:
请勿将此类工具用于:
遵循 James Kettle 的方法,这些工具会保持持久的 HTTP/1.1 连接,以正确测试反同步条件。每项测试都会创建单个 TCP 连接并发送多个请求,以观察解析差异。
攻击载荷基于 James Kettle 在其研究中使用的精确模式精心构造,确保与他记录的服务器行为兼容。
检测逻辑实现了 James Kettle 在 35 万美元以上漏洞赏金研究中用于识别成功反同步攻击的相同指标。
基于 James Kettle 的研究发现与建议:
MIT 许可证 - 详情请参阅 LICENSE 文件
这些工具仅用于教育和防御性安全目的。用户有责任确保在测试任何系统之前已获得适当授权。作者不对因使用这些工具而造成的滥用或损害承担任何责任。