IE沙箱特权提升漏洞(CVE-2015-0016)分析

本月微软的“星期二补丁”如约而至,其中就包括MS15-004补丁,修复了一个可能导致特权提升的漏洞(CVE-2015-0016),这是一个非常罕见的针对IE沙箱的漏洞,趋势科技的研究员对这个漏洞进行了详细的分析。

补丁详情

漏洞在TSWbPrxy.exe模块中,TSWbPrxy.exe是一个ActiveX控件,是微软远程桌面服务网络代理的程序。

首先,我用IDA插件patchdiff2查看补丁所作的修改,修改的是函数CTSWebProxy::StartRemoteDestop。

我用OleView加载了TSWbPrxy.exe,查看CTSWebProxy::StartRemoteDestop的定义。

20150320104714621

StartRemoteDesktop的定义

我发现StartRemoteDesktop有两个参数,都和mstsc.exe有关,这个mstsc.exe就是远程桌面程序。

bstrMstsc: mstsc.exe的文件路径

bstrArguments: mstsc.exe的参数

StartRemoteDesktop函数创建进程启动mstsc.exe。我使用了IDA插件更加仔细地检查打过补丁版本和未打补丁的区别:

20150320104806779

打过补丁版本和未打补丁的区别

左图是打过补丁的版本,右边是没有打过的。左图显示在调用CreateProcessW之前,首先会调用check_path函数(灰色部分),而未打补丁的版本没有调用这个函数。

那我们来仔细看看这个函数:

20150320104848768 20150320104906734

check_path代码

函数中有一个参数(lpApplicationName),函数执行过程如下:

首先检查lpApplicationName的长度,如果大于0x104,返回错误0x80075007。

对lpApplicationName进行格式化,将字符‘/’转换为‘\’,将结果保存至var_formatApplicationName。

调用CompareStringW对SystemDirectory + “mstsc.exe”与var_formatApplicationName进行比较,如果两者相同,check_path返回”0″。

调用CompareStringW对SystemWow64Directory + “mstsc.exe”与var_formatApplicationName进行比较,如果两者相同,check_path返回”0″,否则返回0x80075007错误。

我们看一看出微软是如何修复漏洞的。程序会检查lpApplicationName的值是否与远程桌面程序在系统文件夹(对于32位版本的系统是C:\Windows\System32,对于64位是C:\Windows\SysWOW64)中的路径相同。如果二者相同,就会创建进程,否则会返回错误。

漏洞的原理很简单:StartRemoteDesktop函数的功能应该是启动远程桌面程序mstsc.exe,但执行这一程序时没有检查lpApplicationName参数,这就意味着攻击者可以通过修改lpApplicationName参数启动其他任意的进程。

下面是未打补丁版本的代码

20150320105005388

未打补丁版本的代码

绕过IE的沙箱

为了绕过IE的沙箱,我们先得知道沙箱的提升策略是怎样的。提升策略决定进程怎么启动,以什么特权级别启动,这些都储存在注册表项中:

HKLM\Software\Microsoft\Internet Explorer\Low Rights\ElevationPolicy\{GUID}

注册表项中有如下几个值:

AppName: 程序执行名称

AppPath: 程序路径

Policy: 程序的特权级别

20150320105055288

不同的特权级别

对于特权级别为3的进程,IE沙箱会以中等完整性级别(当前用户的权限)运行这个进程。

而TSWbPryx.exe的特权级别正是3。

20150320105147137

TSWbPryx.exe的注册表项

攻击者可以利用另一个漏洞通过IE运行任意代码,但前面说过,由于IE的沙箱机制,代码可能被限制为在较低的完整性级别(权限非常有限)运行,攻击者随后可以利用此漏洞导致任意代码在中等完整性级别(当前用户的权限)运行。攻击者可以用TSWbPrxy ActiveX控件调用StartRemoteDesktop,攻击者就可以较高权限运行某些程序,如,它的父进程TSWbPrxy.exe。

我们可以将这个漏洞与CVE-2014-6332配合使用,这样就可以绕过IE沙箱,以中等完整性级别运行程序。

另外,我们也可以使用CVE-2014-6332绕过ActiveX的安全机制。也就是说IE不会显示像下图这样的窗口,而是直接运行这些控件。

20150320105237414

最终结果就是攻击者可以以中等完整性级别运行某些程序,如下图所示

20150320105318423

以中等完整性级别运行计算器

文章来源:Freebuf黑客与极客(FreeBuf.COM)

 

发表评论

邮箱地址不会被公开。 必填项已用*标注