利用TRACE方法简化异步攻击
你是否遇到过因复杂约束条件而难以利用的HTTP异步漏洞?本文将探讨一种新型利用技术,通过TRACE这个古老却广泛支持的HTTP方法完全攻陷Web应用。
漏洞发现过程
研究者在漏洞赏金项目中发现了HTTP/2异步漏洞(即HTTP请求走私),该漏洞允许在头部值中注入换行符,从而走私传输编码头来分割后端请求。提交漏洞后却收到回复:“仅能走私请求并不构成漏洞本身”。
TRACE方法的妙用
当传统攻击路径受阻时,研究者注意到后端服务器响应TRACE请求。根据HTTP RFC标准,TRACE方法会原样返回接收到的请求消息,这成为突破的关键:
- 请求反射:TRACE响应会完整反射后端接收的请求头和协议变化
- 漏洞诊断:可观察代理修改的头部(如X-Forwarded-For)和协议降级情况
- 攻击构造:结合响应走私和缓存投毒实现完整攻击链
响应走私技术回顾
通过走私HEAD请求产生仅含头部的响应,利用代理对Content-Length的错误处理实现响应拼接:
|
|
TRACE攻击实战
当应用缺乏有效反射端点时,利用TRACE构造恶意脚本:
|
|
产生的TRACE响应会被拼接进后续响应,实现XSS攻击。即使代理禁止TRACE方法,通过请求走私仍可绕过限制。
缓存投毒升级攻击
当后端连接隔离时,通过两种技术扩大影响:
- 客户端异步攻击:需要HTTP/2注入支持
- Web缓存投毒:精心构造包含Cache-Control头的响应
更高级的响应分割技术允许创建完全任意的缓存响应:
|
|
技术限制与绕过
当TRACE限制请求体时:
- 使用分块编码传输
- 通过额外响应追加载荷
- 构造重定向响应实施钓鱼攻击
安全启示
这项研究证明:
- 被遗忘的TRACE方法仍构成重大威胁
- 异步攻击技术仍在持续进化
- 现代防御体系可能被古老方法突破
- 完整的漏洞利用需要创造性思维组合多种技术
该案例再次警示我们:安全防护必须全面覆盖所有HTTP方法,及时禁用调试功能,并严格校验请求/响应边界。