什么是HTTP请求走私?

1 个回答

  • 曹德
    用顺其自然态度过随遇而安的生活.
    ## 作用 HTTP 请求走私(HTTP Request Smuggling)是一种利用不同网络组件对 HTTP 请求边界解析不一致的攻击技术,可能导致: - 将攻击者构造的请求“附加”到其他合法用户请求之前。 - 会话劫持、缓存投毒、绕过前端安全控制等。 - 后端把一个模糊请求解析成两个或多个独立请求。 ## 原理 ### 1. 产生原因 请求通常会经过多个组件,例如反向代理、负载均衡器和后端 Web 服务器。如果这些组件对请求结束位置的判断不同,攻击者就可以构造边界模糊的请求: - 前端代理认为它是一个完整请求。 - 后端服务器却把其中一部分解析成下一个请求。 ### 2. 利用条件 - 存在前端服务器与后端服务器组成的请求处理链。 - 前后端对 `Content-Length` 和 `Transfer-Encoding` 的优先级或解释不同。 - 使用持久连接或 HTTP Pipelining,使多个请求可复用同一 TCP 连接。 - 攻击者能够控制请求头、请求体以及 CRLF(`\r\n`)。 ### 3. 两个关键请求头 - `Content-Length`:用字节数指定请求体长度。 - `Transfer-Encoding: chunked`:使用分块编码,请求体由多个带十六进制长度的块组成,并以 `0` 长度块结束。 当请求中同时出现这两个头部,或通过特殊写法让某个组件忽略 `Transfer-Encoding` 时,前后端可能对“请求体在哪里结束”得出不同结论,从而把后续字节当作另一个请求解析,形成请求走私。
    发布于 2026-10-27 18:21 •IP属地 青海
    举报
    评论
    收藏