翻译来自
掣雷安全小组
翻译成员信息
thr0cyte,Gr33k,花花,
MrTools,R1ght0us,7089bAt
标记红色的部分为今日更新内容。
9.0、介绍
9.1、如何绕过xss输入验证
9.2、对跨站脚本攻击(xss)进行混淆代码测试
9.3、绕过文件上传限制
9.4、绕过web服务器的CORS限制
9.5、使用跨站点脚本绕过CSRF保护和CORS限制
9.6、利用HTTP参数污染
9.7、通过HTTP头利用漏洞
当HTTP参数在同一请求中重复多次并且服务器以不同的方式处理每个实例时,会发生HTTP参数污染(HPP)攻击,从而导致应用程序中出现异常行为。
在本文中,我们将演示如何利用HPP,并解释如何使用它来绕过某些安全控制。
实战演练
1、对于这个配置,我们将再次使用bWApp,因为它有一个非常简单的HPP示例:
在易受攻击的虚拟机中登录bWApp,然后转到HPP:
http://192.168.56.11/bWAPP/hpp-1.PHP
2、先使用正常流量; 有一个要求姓名的表格。 当一个名字是提交时,它要求用户投票支持电影,最后,用户的投票是显示。
3、请注意,所有参数(电影,名称和操作)都在最后一步的URL中。 让我们在URL的末尾添加具有不同值的第二个影片参数,如图所示在下面的屏幕截图中:
看起来服务器只获取给参数的最后一个值。 另请注意,必须通过脚本将name参数添加到请求中,因为我们仅在第一步中引入了它。
4、为了得到一个有点现实的开发载体,我们将试图强制投票总是为电影2号钢铁侠,因为托尼斯塔克想要赢得每一个
时间。
5、转到第一步,并将以下内容作为名称引入:test2&movie = 2; 我们在名称后面注入movie参数。 提交名称后,下一步应该显示如下:
投票给任何电影,比如钢铁侠。 下面的屏幕截图所示,结果将显示您实际投票给钢铁侠。
在本文中,我们了解了如何在一个请求中拥有相同参数的多个实例会影响应用程序处理它的方式。处理这种情况的方式取决于处理请求的Web服务器; 这里有些例子:
该图来自网上
缺乏标准化行为可用于特定情况,以绕过Web应用程序防火墙(WAF)或入侵检测系统(IDS)等保护机制。 想象一下,在IBM服务器上运行的基于Tomcat的应用程序受基于Apache的WAF保护的企业场景并不罕见; 如果我们发送带有易受攻击参数的多个实例的恶意请求并在第一次出现时放入一个注入字符串,并在最后一次出现一个有效值,则WAF将该请求视为有效,而Web服务器将处理第一个值, 这是恶意注入。
HPP还可以允许在请求的不同部分(例如URL和标题或正文)中发送不同实例的情况下绕过应用程序中的某些控件,并且由于编程实践不当,应用程序中的不同方法采用参数的值来自整个请求或来自特定部分
它的。 例如,在PHP中,我们可以从请求的任何部分(URL,正文或cookie)获取参数,而不知道哪一个使用$ _REQUEST []数组,或者我们可以从专用的数组中获取相同的参数。 URL或正文$ _GET []和$ _POST []分别为。如果$ _REQUEST []用于查找应该通过POST请求发送的值,但该参数在URL中被污染, 结果可能包括URL中的参数而不是实际需要的参数。
有关此漏洞的更多信息和一些说明性示例,请访问专用于它的OWASP页面