不一样的SRC挖洞思路: HTTP请求拆分漏洞实战
内容提要
这篇文章分享了作者在国内挖掘到的一个高危实战案例,即由于HTTP请求拆分导致的HTTP请求走私漏洞。作者通过CRLF注入来走私HTTP请求报文,发现反向代理1会将从上游服务器收到的多个响应报文合并为一个响应报文返回给作者。
延伸解读
国内SRC同样存在请求走私漏洞
文章指出,国内安全圈常认为HTTP请求走私、请求拆分和WEB缓存投毒漏洞在国内难以挖掘,因为公开的实战案例多来自国外。但作者以自身经历反驳了这一观点:2023年他挖到多个HTTP请求相关漏洞,累计赏金超过10万元。这说明国内SRC项目中同样存在这类漏洞,安全研究者不应因缺乏公开案例而忽视对国内目标的测试。
反向代理链与pipeline通信是漏洞关键
案例中,站点架构为客户端到反向代理1,再经CRLF注入到反向代理2,反向代理2根据Host头转发到不同web服务器。反向代理1和2之间支持pipeline,即可以连续发送多个HTTP请求而无需等待响应。这种特性使得通过CRLF注入走私请求时,反向代理1会将多个响应合并返回,从而可能暴露或利用请求走私漏洞。
CRLF注入结合Host转发扩大攻击面
作者发现CRLF注入导致请求拆分,且上游并非存储桶,而是基于Host请求转发的反向代理。通过黑盒测试推测架构后,利用CRLF注入构造恶意请求,使反向代理2根据注入的Host头将请求转发到不同web服务器。这种组合可能绕过安全控制,访问非预期后端,体现了请求拆分漏洞在复杂代理环境中的实际危害。
Q&A
什么是HTTP请求走私漏洞?
HTTP请求走私漏洞是由于HTTP请求拆分导致的安全漏洞,攻击者可以通过注入恶意请求来操控服务器的响应。
作者在2023年挖掘到哪些与HTTP请求相关的漏洞?
作者在2023年挖掘到多个与HTTP请求相关的漏洞,包括HTTP请求走私、HTTP请求拆分和WEB缓存投毒漏洞。
CRLF注入是如何导致请求拆分的?
CRLF注入通过在HTTP请求中插入回车换行符,导致服务器错误解析请求,从而实现请求拆分。
反向代理在HTTP请求走私中起什么作用?
反向代理在HTTP请求走私中负责转发请求,错误的配置可能导致多个响应被合并,从而使攻击者能够操控响应内容。
作者通过什么方式获得了超过10万元的赏金?
作者通过挖掘多个与HTTP请求相关的漏洞,累计获得了超过10万元的赏金。
反向代理1和反向代理2之间的通信有什么特点?
反向代理1和反向代理2之间的通信支持pipeline,可以一次性发送多个HTTP请求报文,而无需等待每个响应。