构建XSS Payload是一门艺术,用最简单的要领绕过XSS的缓解方案 8090安适门户
如果你想要绕过测试人员/打击者与方针应用之间的安适掩护机制,那么最简单、最可靠的要领就是操作方针应用的敏感字符过滤成果。没错,这听起来似乎有些“以彼之道,还施彼身”的味道。
百科:XSS(跨站脚本打击)
XSS 打击是代码注入的一种,它允许打击者将代码写到 Web 页面上,Web 应用会错误解析页面内容后执行网页中的脚本内容,导致其他用户浏览此网页时触发页面上的脚本内容,进而使用户浏览器做出脚本内容相应的行为,完成对用户的打击。由于 Web 页面在用户提交文本信息时没有做合法性检测或依赖客户真个合法性检测,导致脚本文本顺利上传至处事器,而在 HTML 解析时,Web 应用没有对脚本文本做正确编码,致使用户提交的打击脚本呈此刻客户端浏览器中,使用户加载并执行打击者编写在 Web 页面中的脚本措施,这些脚本语言凡是有:JavaScript、Java、VBScript、ActiveX、Flash 或者是普通的 HTML。打击告成后,打击者将可获取到用户的私密信息。
打击思路
可能是出于对安适因素或其他方面的考虑,很多开发人员城市在本身编写的代码中添加某种字符过滤成果。但是他们往往都没有意识到,打击者很有可能操作这种成果来欺骗方针设备并实施打击。想必列位同学都知道,Web应用防火墙(WAF)以及浏览器的防XSS过滤器是目前最常用的两种威胁缓解方案。那么在这篇文章中,我们将会报告大家如何操作这项技术影响WAF,并绕过浏览器的防XSS过滤器。
开发人员可以通过使用编程语言自带的函数和自界说函数来过滤/替换失他们认为可能会具有危险性(或不需要的)的字符或字符串。那么接下来让我们首先看一看,当一个应用措施过滤失用户输入数据中的空格字符时,措施会产生些什么。
技术分析
为了让大家更好地舆解,我们专门制作了一个PHP网页[点我访谒]。点开这个网页之后,大家可以看到该站点的URL地点中有两个参数,即“p”和“q”。
第一个参数“p”只是一个简单的“echo $_GET[“p”];”,由于我并没有将这个页面添加进我Web应用防火墙的白名单列表中,因此我们并不能使用普通场景下的缝隙操作要领去操作这个缝隙,具体情况如下图所示。实际上,Sucuri在这里所给与的安适解决方案(CloudProxy)就非常棒了,它并不是通过URL中的“(1)”来检测XSS打击的,它检测的其实是URL中的“
第二个参数“q”是用来验证我们的绕过方案是否告成的。该部分的PHP代码如下所示:
echo str_replace(“ ”, “”, $_GET[“q”]);
这行代码可以剔除去用户输入数据中的空格字符。这看起来虽然很简单,但是却足以欺骗CloudProxy、XSS审计措施、以及谷歌Chrome浏览器的XSS缓解方案。运行功效如下图所示:
从上图中可以看到,我们在相应参数中添加了标记“+”,凡是情况下Web应用措施会将这个字符解析为空格符。我们故意将字符“+”添加进了打击向量/payload中,而就是这一个简单的字符,就能够让方针应用的安适防御机制掉效。Web应用防火墙无法检测到这种类型的XSS打击,因为“。而且,由于这种形式的payload与XSS打击向量样本库中的payload有很大差别,因此XSS审计措施同样也不会将其视为XSS打击向量。
由此可见,打击者所发送的内容和Web应用真正响应的内容并不必然是不异的。如果打击者输入的数据与数据库中的恶意payload匹配度很低的话,那么打击者所输入的内容就不会被看成恶意内容措置惩罚惩罚。
此外一种情况
除了上面这种要领之外,我们还可以操作字符/字符串替换成果来搪塞这些安适掩护法子。为此,我们此外制作了一个网页[点我访谒]。这一次,我们将要使用四个URL参数,即“p”、“q”、“r”和“s”。我们将该网页添加进了Web应用防火墙的白名单之中,因此这些参数还没有强大到能够绕过WAF:每一个请求中的“但是我们可以用这个要领来搪塞XSS
温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/pc/12867.html