研究人员演示了HTTP请求走私攻击的4个新变种
发布时间:2022-04-03 19:42:50 839
相关标签: # 前端# 服务器# 服务器# 攻击# 信息

SafeBreak的安全研究副总裁阿米特·克莱因(Amit Klein)在今天的黑帽安全会议上介绍了这一发现。他说,这些攻击突显了web服务器和HTTP代理服务器在首次被记录15年后仍然容易受到HTTP请求走私的影响。
什么是HTTP请求走私?
HTTP请求走私(HTTP Desyncing)是一种用来干扰网站处理从一个或多个用户接收的HTTP请求序列的技术。
当前端(负载平衡器或代理)和后端服务器以不同的方式解释HTTP请求的边界时,通常会出现与HTTP请求走私相关的漏洞,从而允许坏行为体发送(或“走私”)一个不明确的请求,该请求被预先设置为下一个合法用户请求。
可以利用请求的这种去同步来劫持凭据、向用户注入响应,甚至从受害者的请求中窃取数据,并将信息导出到攻击者控制的服务器。
2005年,Watchfire的一组研究人员首次展示了这项技术,他们包括克莱恩、查姆·林哈特、罗宁·赫里德和史蒂夫·奥林。但在过去五年中,已经设计了一些改进,在攻击表面上显著扩展,将请求拼接到其他请求中,“获得对内部API的最大权限访问”、毒害web缓存,并破坏流行应用程序的登录页面。
有什么新鲜事吗?
Klein披露的新变体涉及使用各种代理服务器组合,包括web服务器模式下的Aprelium's Abyss、Microsoft IIS、Apache和Tomcat,以及HTTP代理模式下的Nginx、Squid、HAProxy、Caddy和Traefik。

所有四个新变种的列表如下,包括研究人员在实验中成功利用的一个旧变种。
- 变量1:“标题SP/CR垃圾:…
- 变体2–;“等等”
- 变体3–;HTTP/1.2绕过类似mod_安全的防御
- 变体4–;简单的解决办法
- 变体5–;“CR标题”
例如,在处理包含两个内容长度头字段的HTTP请求时,发现Abyss接受第二个头作为有效头,而Squid使用第一个内容长度头,从而导致两台服务器对请求进行不同的解释,并实现请求走私。
在Abyss获取HTTP请求时,如果请求的正文长度小于指定的内容长度值,它会等待30秒来完成请求,但不会在忽略请求的剩余正文之前完成。克莱恩发现,这也导致了Squid和Abysis之间的差异,后者将出站HTTP请求的部分解释为第二个请求。
该攻击的第三种变体使用HTTP/1.2绕过OWASP ModSecurity核心规则集(CRS)中定义的WAF防御,以防止HTTP请求走私攻击通过恶意负载触发该行为。
最后,Klein发现,使用“Content-Type:text/plain”标题字段足以绕过CRS中指定的妄想级别检查1和2,并产生HTTP请求走私漏洞。
可能的防御措施是什么?
在向Aprelium、Squid和OWASP CRS披露研究结果后,这些问题在Abysis X1 v2中得到了解决。14、Squid版本4.12、5.0.3和CRS v3。3.0.
Klein呼吁对来自代理服务器的出站HTTP请求进行规范化,强调需要一个开源、健壮的web应用程序防火墙解决方案,能够处理HTTP请求走私攻击。
克莱恩指出:“ModSecurity(与CRS结合)确实是一个开源项目,但就健壮性和通用性而言,mod_security有几个缺点。”。“它不能提供针对HTTP请求走私的全面保护,[而且]它只适用于Apache、IIS和nginx。”
为此,克莱因发布了一个基于C++的库,通过严格遵守HTTP头格式和请求行格式,确保所有传入的HTTP请求都是完全有效、兼容和明确的。这里可以从GitHub访问它。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报