CVE-2017-11882 简单分析

漏洞简介
CVE-2017-11882 ,漏洞出现在模块EQNEDT32.EXE中,该模块为公式编辑器,在office安装过程中被默认安装,该模块以OLE技术将公式嵌入在office文档中。该漏洞的成因是EQNEDT32.EXE进程在读入MathType数据时,在拷贝字体名的时候没有对名称长度进行校验,从而造成了栈溢出。
分析环境
1:Win7 + office 2010
 
数据结构分析
 
OLE OBJECT DATA = EQNOLEFILEHDR + MTEFData
MTEFData = MTEF header + MTEF Byte Stream
 
 
EQNOLEFILEHDR 结构如下
struct EQNOLEFILEHDR {
   WORD    cbHdr;      // 格式头长度,固定为0x1C
   DWORD   version;    // 固定为0x00020000
   WORD    cf;          // 该公式对象的剪贴板格式。
   DWORD   cbObject;  // MTEF数据的长度,不包括头部。
   DWORD   reserved1; // 未公开
   DWORD   reserved2; // 未公开
   DWORD   reserved3; // 未公开
   DWORD   reserved4; // 未公开
};
 
 
MTEF header结构如下
 
偏移量
说明
0
MTEF版本号
0×03
1
该数据的生成平台
0×00表示在Macintosh平台生成,0×01表示在Windows平台生成。
2
该数据的生成产品
0×00表示由MathType生成,0×01表示由公式编辑器生成。
3
产品主版本号
0×03
4
产品副版本号
0x0A
 
 
MTEF Byte Stream
数据 8 对应的数据类型为FONT ,数据流对应如下
FONT记录标志
typeface类型
字体风格
字体名(以空字符结尾)
 
在POC中,对应以上结构的的数据如图所示
 
漏洞分析
 
如下图所示,dstStr 为局部变量,大小为36字节,在进行拷贝的时候,并没有进行大小的验证。所以造成 了栈溢出。
 
调试验证:
通过对下面的两张图进行对比,可以明白栈溢出的触发过程。
 
被修改后的函数调用如下图所示,在前文中已经提到,该公式编辑器并没有开启ASLR。这个硬编码的地址0x00430C12对应于对函数WinExec的调用。因而该字体名对应的命令得以执行。
 
 

转载于:https://www.cnblogs.com/banchen/p/8301416.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值