HTTP请求走私漏洞

一、漏洞定义与核心原理

HTTP请求走私(HTTP Request Smuggling)是一种利用前端服务器(如代理、负载均衡器)与后端服务器在解析HTTP请求时的不一致性,绕过安全机制并执行恶意操作的攻击技术。其核心在于混淆请求边界,使前后端服务器对同一请求的解析结果不同,导致攻击者注入的恶意请求被后端服务器单独处理。

关键成因

HTTP/1.1协议允许通过两种方式指定请求体长度:

  1. Content-Length:直接声明请求体字节数。
  2. Transfer-Encoding: chunked :分块传输,以0\r\n\r\n标记结束。

当前后端服务器对这两种方式的处理逻辑不一致时(如前端按Content-Length解析,后端按Transfer-Encoding解析),攻击者可构造特殊请求,使前端转发一个请求,而后端将其拆分为多个请求,从而绕过安全控制。

二、漏洞类型与攻击示例

  1. CL.TE(Content-Length + Transfer-Encoding)
    • 前端 :按Content-Length解析。

    • 后端 :按Transfer-Encoding解析。

    • 攻击示例

      复制代码
      POST / HTTP/1.1
      Host: example.com
      Content-Length: 6
      Transfer-Encoding: chunked
      0
      GET /admin HTTP/1.1
      • 前端根据Content-Length=6,认为请求体为0\r\n\r\n,转发完整请求。
      • 后端按Transfer-Encoding解析,遇到0后认为请求结束,剩余部分(GET /admin...)被视为新请求,可能绕过权限控制。
  2. TE.CL(Transfer-Encoding + Content-Length)
    • 前端 :按Transfer-Encoding解析。

    • 后端 :按Content-Length解析。

    • 攻击示例

      复制代码
      POST / HTTP/1.1
      Host: example.com
      Content-Length: 4
      Transfer-Encoding: chunked
      5c
      GPOST / HTTP/1.1
      • 前端按Transfer-Encoding解析,读取5c字节后停止(实际数据为GPOST...)。
      • 后端按Content-Length=4,认为请求体为5c\r\n,剩余部分(GPOST...)被视为新请求,可能导致请求伪造。
  3. TE.TE(混淆Transfer-Encoding): 前后端均支持Transfer-Encoding,但攻击者通过混淆(如Transfer-Encoding: xchunked)使某一端忽略该头部,导致解析不一致。

三、漏洞危害

  1. 会话劫持:窃取用户Cookie或会话令牌,冒充合法用户。
  2. 缓存投毒:污染CDN或代理缓存,向其他用户返回恶意内容。
  3. 跨站脚本(XSS):注入恶意脚本,窃取用户数据或执行未授权操作。
  4. 请求伪造:伪造管理员请求,执行敏感操作(如添加用户、修改配置)。
  5. 信息泄露:获取服务器内部信息(如路径、配置、敏感文件)。
  6. 拒绝服务(DoS):通过大量恶意请求耗尽服务器资源。
  7. 远程代码执行(RCE):在特定环境下,结合其他漏洞执行任意代码。

四、检测与防御措施

检测方法

  1. 计时攻击:通过发送特定请求并观察响应延迟,判断是否存在解析不一致(如CL.TE或TE.CL)。
  2. 差异响应:构造包含两个请求的测试用例,检查后端是否将部分数据视为新请求。
  3. 自动化工具:使用Burp Suite、OWASP ZAP等工具扫描潜在漏洞。

防御策略

  1. 统一解析逻辑 :确保前后端服务器使用相同的请求体长度解析方式(如均禁用Transfer-Encoding或均启用严格校验)。
  2. 禁用危险头部 :在代理或负载均衡器中禁用Transfer-EncodingContent-Length的混合使用。
  3. 输入验证 :严格校验HTTP头部格式,拒绝非标准或恶意字符(如\r\n%0d%0a)。
  4. 版本升级:及时更新服务器软件(如Nginx、Apache、IIS),修复已知解析漏洞。
  5. WAF防护:部署Web应用防火墙(WAF),拦截可疑请求(如包含多个请求的混合数据包)。
  6. 网络隔离:避免直接暴露后端服务器,通过代理或API网关统一处理请求。

五、真实案例

  1. Apache Tomcat CVE-2021-33037
    • 漏洞 :Tomcat在某些配置下未正确解析Transfer-Encoding头部,导致与反向代理(如Nginx)组合使用时可能发生请求走私。
    • 影响:攻击者可绕过安全检查,执行未授权操作(如访问管理员接口)。
    • 修复:升级至Tomcat 8.5.67、9.0.47或更高版本。
  2. 某电商平台缓存投毒事件
    • 攻击:通过HTTP请求走私污染CDN缓存,向用户返回恶意商品页面,窃取支付信息。
    • 后果:数万用户数据泄露,平台声誉受损。
    • 教训:需定期检测缓存服务器安全性,并严格隔离前后端请求处理逻辑。

六、总结

HTTP请求走私是一种高危漏洞,其本质是协议解析不一致性。攻击者通过构造特殊请求,可绕过身份验证、窃取数据或执行未授权操作。防御该漏洞需从协议规范、服务器配置、输入验证等多层面入手,结合自动化工具与人工审计,确保前后端解析逻辑的一致性。同时,关注安全公告,及时修复已知漏洞,是降低风险的关键。

结语

把事情一件一件做完

让愿望一个一个实现

!!!

相关推荐
智云软件测评服务1 个月前
Web应用安全漏洞扫描:原理、常用方法及潜在风险解析?
应用·漏洞·扫描
网安INF1 个月前
CVE-2024-23897源码分析与漏洞复现(Jenkins 任意文件读取)
java·web安全·网络安全·jenkins·漏洞
网安INF1 个月前
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
java·web安全·网络安全·flink·漏洞
网安INF1 个月前
CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)
java·web安全·网络安全·kafka·漏洞·jndi注入
网安INF1 个月前
CVE-2020-17518源码分析与漏洞复现(Flink 路径遍历)
java·web安全·网络安全·flink·漏洞
不知几秋1 个月前
pikachu通关教程-File Inclusion
漏洞
智云软件测评服务1 个月前
网络系统中安全漏洞扫描为何重要?扫描啥?咋扫描?
漏洞·扫描·检测
智云软件测评服务1 个月前
测评机构如何通过漏扫保障软件安全?扫描范围与局限解析
渗透·漏洞·扫描
Think Spatial 空间思维2 个月前
【安全攻防与漏洞】HTTPS中的常见攻击与防御
网络协议·安全·https·漏洞·攻防·防御