Office漏洞袭来(CVE-2018-0802)详细分析

华盟学院山东省第二期线下学习计划

在windows2017年 11月份发布补丁,修复了包括cve-2017-11882在内之后,在2018年又继续发布补丁,修复了包括CVE-2018-0802在内的多个漏洞,而这次CVE-2018-0802再一次利用了EQNEDT32.EXE公式编辑器的栈溢出漏洞,而这个漏洞则是CVE-201-11882的补丁绕过漏洞,网上也出现两种漏洞结合的POC,我们一起来看看这个漏洞。

漏洞分析

分析环境:win7

Office 版本:office2007 SP3 并打上CVE-2017-11882补丁

我们首先看下在打完补丁后EQNEDT32.exe的属性

1.png

我们看看POC的RTF文件,可以看到继续使用objupdate字段来使OLE对象的自动更新和加载

1.png

然后我们通过rtfobj.py将这个OLE对象提取

1.png

我们可以看前面还是28字节的EQNOLEFILEHDR的结构体,我们来看看后面的MIEF data,对应的是下面的阴影部分,第一个字节03代表MTEF的版本号,第二个字节01表示在windows平台生成,第三个字节01表示这个是公式编辑器生成,之后的是产品的主版本号和产品的副版本号

1.png

之后是公式数据流,这个一系列的records 字节08 表示Font record,我们通过文档

来具体查看一下这个font字节,分别是tface和style和name,,看来这次出问题的还是font name ,而上次CVE-2017-11882也是这个font name

1.png

我们先来动态调试下,确定下漏洞点

设置windbg为默认的调试器,并且设置EQNEDT32.EXE的默认调试器为windbg,这样在EQNEDT32.EXE在启动的时候就会默认附加到windbg上

1.png

通过构造Crash和栈回溯我们定位到漏洞地点,函数地址为012D1774,基地址为0x12B0000,由于模块开启了ASLR动态调试地址可能不同

1.png

通过动态分析我们发现漏洞点在crash函数的sub_1201E39

1.png

溢出点则在拷贝函数中,我们可以看到这个关键函数主要是用来初始化一个LOGFONT的结构体

1.png

我们可以看到在拷贝的明显发生了栈溢出,而这次拷贝的是0×94字节,直到遇到0×00,而这次只分配了0x1c个字节,显然发生了栈溢出,

1.png

而这次只为了覆盖返回地址,我们看看是如何覆盖返回地址,以及如何绕过ASLR的,我们可以看到在覆盖前的返回地址是012014e2,而这个函数也是crash函数调用以后的下一条指令

1.png

1.png

我们看看覆盖之后的返回地址的是什么样子的,变成了01200025

1.png

而0×01200025这个地址为retn  指令而正是通过这样的覆盖绕过了ASLR,我们知道在32位进程中每次只随机化地址的高2个字节,而低两个字节是不变的,而正是利用了这个特性才绕过ASLR

1.png

我们来看一下为什么会选择这个ret指令,因为这样会执行 crash函数的第一个参数

正是lpLogfont,也就是样本可以控制的FontName

1.png

由于并没有开启DEP,所以可以在栈中可以执行代码,可以看一下这个shellcodes

1.png

还有一个问题是这个漏洞在未打补丁的系统中,并不会执行,因为CVE-2017-11882覆盖返回地址需要的长度远远小于这个样本,而在执行这个样本的时候会先触发CVE-2017-11882导致Crash,网上也出现了将两种洞组合的POC,在CVE-2017-11882利用不成功,会利用CVE-2018-0802

1.png

总结

漏洞针对EQNEDT32.EXE公式编辑器,结合CVE-2017-11882漏洞组合攻击将会造成很大的危害,建议尽快打补丁或者禁止EQNEDT32.EXE模块

漏洞修复建议

补丁下载地址 https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-0802

或者通过注册表直接禁用这个模块

reg add “HKLM\SOFTWARE\Microsoft\Office\XX.X\Common\COMCompatibility\{0002CE02-0000-0000-C000-000000000046}” /v”Compatibility Flags” /t REG_DWORD /d 0×400

regadd”HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\XX.X\Common\COMCompatibility\{0002CE02-0000-0000-C000-000000000046}”/v”Compatibility Flags” /t REG_DWORD /d 0×400

www.idc126.com

*本文作者:兰云科技银河实验室,转载请注明FreeBuf.COM

本文由 华盟网 作者:AlexFrankly 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论