实战Web安全测试之HTTP截断(走私漏洞篇)

发表于:2011-8-01 14:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  四、HTTP走私攻击灰盒测试

  之前讲过,HTTP走私攻击所利用的漏洞是,某些精心构造的HTTP消息会随不同的代理(浏览器、web缓存、应用程序防火墙)而做不同的解释。这种攻击方法是由ChaimLinhart、AmitKlein、RonenHeled和SteveOrrin于2005年发现的。这种攻击有多种用途,我们这里仅介绍最雷人的一种:绕过应用程序防火墙。

  下面,我们详细介绍利用HTTP走私攻击绕过应用程序防火墙的详细方法。有许多应用防火墙都能根据一些已知的嵌入请求的恶意模式来检测和阻止怀有恶意的web请求。举例来说,针对IIS服务器的Unicode目录遍历攻击能够通过提交一个类似下面所示的一个请求发动攻击:

  图4

  当然,通过检查URL是否存在类似“..”和“cmd.exe”的字符串可以很容易地检测和过滤掉这种攻击。然而,IIS5.0对于POST请求主体的长度是有要求的,最多为48K字节——当Content-Type头部不同于application/x-www-form-urlencoded时,超出该限制的部分会被全部截断。攻击者可以利用这一点来创建一个很大的请求,如下所示:

  图5

  这里,Request#1由49223字节内容组成,所以Request#1还包含了Request#2的几行内容。因此,防火墙(或者其他任何代理)会看到Request#1,但是却无法看到Request#2(它的数据正好是#1请求的一部分),能够看到Request#3却会遗漏Request#4(因为该POST正好是伪造的头部xxxx部分)。现在,IIS5.0将会发生什么情况?它将在49152字节无用信息之后停止对Request#1的解析,因为这已经达到了48K=49152字节的限制,并将Request#2解析为一个新的、单独的请求。Request#2声称它的内容为33字节,包括xxxx:之前的所有内容,这使得IIS会漏掉Request#3,因为Request#3被解释为Request#2的一部分,但是IIS会认出Request#4,因为它的POST是从Request#2的第33个字节之后开始的。当然,这看起来有些复杂,但是却很好的解释了为什么该攻击性URL不会被防火墙发现,却能被IIS正确解析和执行的原因所在。

  在上面的情形中,虽然我们利用的是web服务器中的安全漏洞,但是在其他情形中,我们可以通过利用各种支持HTTP的设备在解析不兼容1005RFC的消息时所采取的方式各不相同来发动攻击。举例来说,HTTP协议只允许一个Content-Length头部,但是却没有规定如何处理具有两个Content-Length头部的消息。一些实现将使用第一个,而另一些实现则使用第二个,这种情况下就很容易遭到HTTP走私的攻击。另一个例子是GET消息中Content-Length头部的使用。

  五、小结

  在本文中,我们详细为读者介绍了针对HTTP截断和HTTP走私攻击的安全测试技术。我们通过实例演示了如何利用HTTP协议的某些特性,或者利用Web应用程序的弱点或者不同代理对HTTP消息的解释也不相同的特点来发动这两种攻击。希望本文对读者的安全测试工作有所帮助。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • 肖伊君
    2011-8-02 11:27:15

    有没有好的书推荐啊?谢谢啦

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号