SafeBreach安全研究副总裁Amit Klein在8月5日的Black Hat安全会议上介绍了调查结果,他说,这种攻击突显了Web服务器和HTTP代理服务器仍然易受HTTP请求走私的影响(即使自首次记录以来已有15年)。
什么是HTTP请求走私?
HTTP请求走私(或HTTP异步)是一种用于干扰网站处理从一个或多个用户接收的HTTP请求序列的方式的技术。
当前端服务器(负载平衡器或代理)和后端服务器以不同的方式解释HTTP请求的边界时,通常会出现与HTTP请求走私有关的漏洞,从而使不良行为者发送(或“走私”)模糊请求,此优先于下一个合法用户请求。 请求的这种不同步可以被用来劫持凭据,向用户注入响应,甚至从受害者的请求中窃取数据,并将信息泄露给攻击者控制的服务器。
该技术首次展示于2005年一组来自Watchfire的研究人员,其中包括Klein,Chaim Linhart,Ronen Heled和Steve Orrin。但是在过去的五年中,已经设计了许多改进,在攻击面上进行了扩展,以将请求拼接成其他请求,并“获得对内部API的最大权限访问”,污染Web缓存,并破坏流行应用程序的登录页面。
新的威胁
Klein公开的新变体涉及使用各种代理服务器组合,包括在Web服务器模式下的Aprelium的Abyss,Microsoft IIS,Apache和Tomcat,以及在HTTP代理模式下的Nginx,Squid,HAProxy,Caddy和Traefik。
所有四个新变体的列表如下,其中包括一个由研究人员在实验中成功利用的旧变体。
- 变体1:“标头SP / CR垃圾邮件:……”
- 变体2 –“等待”
- 变体3 – HTTP / 1.2绕过类似于mod_security的防御
- 变体4 –一个简单的解决方案
- 变体5 –“ CR标头”
例如,在处理包含两个Content-Length标头字段的HTTP请求时,发现Abyss接受第二个标头为有效,而Squid使用第一个Content-Length标头,从而导致两个服务器以不同的方式解释请求并实现请求走私。
在Abyss收到长度小于指定的Content-Length值的主体的HTTP请求的情况下,它将等待30秒以完成该请求,但不会忽略该请求的其余主体。Klein发现,这也导致Squid与Abyss之间存在差异,后者会将出站HTTP请求的部分解释为第二个请求。
攻击的第三种形式使用HTTP / 1.2来规避OWASP ModSecurity中定义的WAF防御用于防止HTTP请求走私攻击的核心规则集(CRS)会生成触发该行为的恶意有效负载。 最后,克莱因(Klein)发现使用“ Content-Type:text / plain”标头字段足以绕过CRS中指定的偏执狂级别检查1和2,并产生HTTP请求走私漏洞。
有哪些可能的防御措施?
在将发现披露给Aprelium,Squid和OWASP CRS之后,问题已在Abyss X1 v2.14,Squid版本4.12和5.0.3和CRS v3.3.0中修复。
Klein呼吁规范来自代理服务器的出站HTTP请求,强调了对开源、强大的Web应用程序防火墙解决方案的需求,该解决方案能够处理HTTP请求走私攻击。
Klein指出:“ ModSecurity(与CRS结合使用)确实是一个开源项目,但是就稳健性和通用性而言,mod_security具有多个缺点。” “它不能提供针对HTTP请求走私的全面保护,并且仅可用于Apache,IIS和nginx。”
为此,Klein发布了一个基于C ++的库,该库通过严格遵守HTTP标头格式和请求行格式来确保所有传入的HTTP请求都是完全有效,合规且明确的。可以点击此处GitHub来访问。
稿件与封面来源:The Hacker News,译者:叶绿体。
本文由 HackerNews.cc 翻译整理,
转载请注明“转自 HackerNews.cc ” 并附上原文链接。
请登录后发表评论
注册