漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0100870
漏洞标题:WPS Office可在一定条件下被中间人攻击导致代码执行(之二)
相关厂商:金山软件集团
漏洞作者: MITM
提交时间:2015-03-12 12:42
修复时间:2015-06-15 12:44
公开时间:2015-06-15 12:44
漏洞类型:设计错误/逻辑缺陷
危害等级:中
自评Rank:7
漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-03-12: 细节已通知厂商并且等待厂商处理中
2015-03-17: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-05-11: 细节向核心白帽子及相关领域专家公开
2015-05-21: 细节向普通白帽子公开
2015-05-31: 细节向实习白帽子公开
2015-06-15: 细节向公众公开
简要描述:
WPS Office可被中间人攻击导致代码执行,仍需一定条件,和WooYun-2015-100491思路有少许不同。版本:9.1.0.4953
详细说明:
中间人漏洞我目前发现有三个类型,WPS Office在这三类漏洞都有,非常经典。
类型一:用了HTTPS,但是未校验TLS证书。常见于软件内的登录界面。
类型二:自动下载可执行文件,未经校验就执行。常见于自动更新。
类型三:使用IE WebBrowser控件显示界面,网页内容可被中间人劫持,并且提供高权限接口给网页。
WooYun: WPS Office可被中间人攻击执行任意代码(需要一定条件) 讨论的就是类型一和二。这一报告讨论类型三。
类型三的背景是WebBrowser中的HTML页面通过window.external调用宿主程序的函数[1]。如果宿主程序将诸如文件读写、执行程序、注册表读写等函数提供给页面,如果不全程HTTPS的话,中间人就能够利用这些函数,严重情况可导致执行任意代码。
下面我们来看WPS Office,首先我们在运行WPS Office之前,打开Fiddler抓包。我们可以从抓来的请求中搜索window.external这一关键词。很快我发现window.external.WriteSetting("wreg", "<键值>")可以用来写Windows注册表。我又发现运行WPS时,有时会打开“WPS热点”,每天一次。WPS热点正是用了WebBrowser,所以接下来中间人只需劫持任意WPS热点的HTML请求(比如http://img1.mini.cache.wps.cn/wpsmini/partners_web/special_buy/
),注入WriteSetting,注册表就可以任意改了,而且无需用户交互,在加载页面时就会执行,不需要点通知栏里闪烁的图标。当然因为WPS没有管理员权限,我们只能改HKEY_CURRENT_USER下的键值。通过修改注册表达到任意代码执行应该是不难的。我的方法是修改开机启动项,当然我相信还有更好的方法,不过这就不是这个漏洞的重点了。
所以说如果用户在中间人控制的情况下刚刚打开WPS Office,那么下次开机时就会执行恶意代码。
参考文档:
[1] https://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.objectforscripting(v=vs.110).aspx
漏洞证明:
版本:
使用Fiddler,在FidderScript的OnBeforeResponse函数中加入以下代码:
然后运行WPS文字。过一会儿,打开regedit,可以看到WPSUpdater已经被写入注册表。
修复方案:
让网页随便改注册表绝对是危险的。应当根据需要仅开放相关API,读写注册表放在程序里进行。不要为了省事就开放高权限API。要重视中间人攻击,要把服务器返回的内容认为不可靠。
版权声明:转载请注明来源 MITM@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2015-06-15 12:44
厂商回复:
最新状态:
暂无