4种HTTP请求走私攻击的新变种

作者:安数网络 发布时间:2020-08-07 17:14:28 浏览次数:1438

一项新的研究确定了四种针对HTTP请求走私攻击的新变种,它们可以针对各种商用现成的Web服务器和HTTP代理服务器。

SafeBreach安全研究副总裁Amit Klein,在8月5日的Black Hat安全会议上展示了这一发现,他说,这种攻击突显了Web服务器和HTTP代理服务器仍然易受HTTP请求走私的影响(自首次记录以来已有15年)。

(图片源于:51cto.com,侵删)

什么是HTTP请求走私?

HTTP请求走私(或HTTP异步)是一种用于干扰网站处理、从一个或多个用户接收的HTTP请求序列的方式的技术。

当前端服务器(负载平衡器或代理)和后端服务器以不同的方式解释HTTP请求的边界时,通常会出现与HTTP请求走私有关的漏洞,从而使不良行为者发送优先于下一个合法用户请求。 这种不同步的请求可以被用来作劫持凭据,向用户注入响应,甚至从受害者的请求中窃取数据,并将信息泄露给攻击者控制的服务器。

该技术首次展示于2005年来自Watchfire的一组研究人员,其中包括Klein,Chaim Linhart,HeledRonen 和Steve Orrin。但是在过去的五年中,已经设改进了许多,在攻击面上也随之进行了扩展,例如:将请求拼接成其他请求,获得对内部API的最大权限访问,污染Web缓存,破坏流行应用程序的登录页面。

新的威胁

Klein公开的新变体涉及使用各种代理服务器组合,包括在Web服务器模式下的Aprelium的Abyss,Microsoft IIS,Apache和Tomcat,以及在HTTP代理模式下的Nginx,Squid,HAProxy,Caddy和Traefik。

所有四个新变体的列表如下,其中包括一个由研究人员在实验中成功利用的旧变体。

(图片源于:51cto.com,侵删)

· 变体1:“标头SP / CR垃圾邮件:……”

· 变体2 –“等待”

· 变体3 – HTTP / 1.2绕过类似于modsecurity的防御

· 变体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请求走私攻击。

(图片源于:51cto.com,侵删)

同时指出:“ ModSecurity(与CRS结合使用)确实是一个开源项目,但是就稳健性和通用性而言,modsecurity具有多个缺点。” “它不能提供针对HTTP请求走私的全面保护,并且仅可用于Apache,IIS和nginx。”

为此,Klein发布了一个基于C ++的库,该库通过严格遵守HTTP标头格式和请求行格式来确保所有传入的HTTP请求都是完全有效,合规且明确的。可以点击此处GitHub来访问。

及时掌握网络安全态势 尽在傻蛋网络安全监测系统

【网络安全监管部门】免费试用

本文来源:51cto.com

如涉及侵权,请及时与我们联系,我们会在第一时间删除或处理侵权内容。
电话:400-869-9193 负责人:张明