cve-2018-0802漏洞分析报告

软件名称:公式编辑器
软件版本:2016以下
漏洞模块:EQNEDT32.EXE
模块版本:6.1.95.45
编译日期:2000-11-9 操作系统:Windows XP/2003/7/8.1/10
漏洞编号:cve-2017-0802
危害等级:高危
漏洞类型:缓冲区溢出
威胁类型:远程

软件简介

Microsoft Office 是微软公司针对 Windows 操作系统所推出的办公室套装软件
公式编辑器是office的其中一个组件,为一个独立的EXE,程序发布的是2000年,使用VC4.X编译器所生成,经过office2007 SP3 并打上CVE-2017-11882补丁了
在这里插入图片描述

漏洞成因

公式编辑器存在缓冲区溢出漏洞。
该漏洞的成因是EQNEDT32.EXE进程在读入包含MathType的ole数据时,在拷贝公式字体名称(Font Name数据)时没有对名称长度进行校验,从而造成栈缓冲区溢出,是一个非常经典的栈溢出漏洞。

利用过程

打开含有恶意代码的Word文档,会弹出一个计算器。
在这里插入图片描述
使用OD附加EQNEDT32.EXE进程。在创建进程相关的函数下断点。
在这里插入图片描述
Bat文件内的命令:
在这里插入图片描述
发现是使用WinExec创建的进程,不过这次启动的是Bat文件,Bat文件内可以执行更多更长的命令。
通过栈回溯,找到上一层地址
在这里插入图片描述
来到这段代码,做个记录
在这里插入图片描述
找到这段代码的最头部,下一个断点,再次打开带有恶意代码的Word文档,一直往后面单步,经过多层的调用后,最终发现了拷贝溢出点
在这里插入图片描述
这里实现的拷贝覆盖返回地址,然后只拷贝了两个字节,因为这次补丁开启了随机基址,然后只拷贝后2个字节,这个2个字节是根据原本返回地址的基址的偏移计算出来的,指向的也是本模块的某一条指令。
在这里插入图片描述
这条指令是ret,就可以实现返回后,执行下一条跳向栈空间的地址。
在这里插入图片描述
栈内填充的都是shellcode代码,这样就可以直接执行shellcode内的代码了。
在这里插入图片描述
通过取栈内返回地址,计算偏移得到winexec指令地址,直接跳过去
在这里插入图片描述
最终弹出了计算器。

由于运行的bat文件,bat是事先写入到系统临时目录内的。
使用Malware Defender进行了监控,发现是Word进程写入的bat文件
在这里插入图片描述
使用OD下WriteFile断点,发现了写入的操作
在这里插入图片描述
栈回溯,发现是packager.dll模块调用的一组写出文件操作
在这里插入图片描述
使用rtfobj扫描。发现是word使用嵌入对象,自动释放出来的文件。
在这里插入图片描述

PoC

在rtf的嵌入式对象中存放木马病毒文件,释放出来之后使用公式编辑器的缓冲区溢出漏洞,执行shellcode,即可将木马病毒文件执行起来。

结语

漏洞影响的范围比较大,公式编辑器一直从2000版本以来保留使用到2016版本
使用的编译器也比较老久,没有对内存长度进行检查,所以容易造成缓冲区溢出,且可以利用该漏洞为所欲为。

猜你喜欢

转载自blog.csdn.net/qq_43572067/article/details/83615272