CVE-2017-11882漏洞分析

分析环境

  • 环境 W7 x64 Office2013
  • 工具 windbg IDA Pro

漏洞描述

CVE-2017-11882是微软公布的一个远程执行漏洞,通杀目前市面上的所有office版本及Windows操作系统(包括刚刚停止支持的Office 2007)。该漏洞的成因是EQNEDT32.EXE进程在读入包含MathType的ole数据时,在拷贝公式字体名称时没有对名称长度进行校验,从而造成栈缓冲区溢出,是一个非常经典的栈溢出漏洞。上次出现这么典型的office栈溢出漏洞是著名的CVE-2012-0158

漏洞成因

该漏洞出现在模块EQNEDT32.EXE中, 该模块为windows的公式编辑器。由于该模块对于输入的公式未做正确的处理,攻击者可以通过刻意构造的数据内容覆盖掉栈上的函数地址,从而劫持程序流程,执行任意命令

**模块路径:**C:\Program Files\Common Files\microsoft shared\EQUATION

在这里插入图片描述

文件信息

在这里插入图片描述

如图可以发现,程序发布于2000年,编译器使用VC++4.2

受漏洞影响的版本

  • Office 365
  • Microsoft Office 2000
  • Microsoft Office 2003
  • Microsoft Office 2007 Service Pack 3
  • Microsoft Office 2010 Service Pack 2
  • Microsoft Office 2013 Service Pack 1
  • Microsoft Office 2016

漏洞分析

获取poc

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

复现漏洞

  • 搭建漏洞环境(安装Office 2003 sp3),执行漏洞poc
  • 由于漏洞出现在EQNEDT32.EXE 进程 首先需要确认是否存在公式编辑器
  • 菜单->插入->对象 找到公式3.0
  • 如果没有则说明Office安装不完全

在这里插入图片描述

  • 打开exploit.rtf,弹出计算器

在这里插入图片描述

漏洞分析

定位漏洞模块

在这里插入图片描述

通过ProcessMonitor查看计算器的父进程,发现是EQNEDT32.EXE,且EQNEDT32.EXE并不会作为WINWORD的子进程创建,而是以单独的形式存在。这就意味着Office的进程保护机制,无法阻止EQNEDT32.EXE这个进程被利用。

定位漏洞函数

因为弹出计算器的时候创建了新进程,所以我们可以认为是由WinExec或者CreateProcess创建的。用windbg附加EQNEDT32.EXE,然后下API断点

在这里插入图片描述

打开poc,程序断下,分析WinExec的返回地址和参数

在这里插入图片描述

接着查看一下参数的内容

在这里插入图片描述

看到了通过cmd命令来开启计算器

在这里插入图片描述

接着查看一下当前的调用堆栈,看是谁调用了WinExec这个函数

在这里插入图片描述

接着用ub命令查看这个返回地址之前的汇编代码,然后在IDA中查看这些函数

在这里插入图片描述

在IDA中找到sub_4115A7这个函数,进去F5查看

在这里插入图片描述

只有这么一小段代码,继续跟进查看sub_41160F

在这里插入图片描述

这里的字符串拷贝函数没有使用安全版本的,会导致栈溢出,那么这个函数就是触发漏洞的函数了

定位漏洞触发点

在这里插入图片描述

重新运行windbg,在0x4115D3这个触发漏洞的函数下断点

在这里插入图片描述

此时程序断下

在这里插入图片描述

查看堆栈的参数,参数的内容就是poc中构造的恶意参数

在这里插入图片描述

接着进入函数,一直单步到这一条rep指令

在这里插入图片描述

此时我们查看ebp+4的内容和edi以及esi的内容,这里可以看到返回地址即将被0x430c12这个地址覆盖

在这里插入图片描述

步过这条指令,再次查看ebp+4的内容,发现此时返回地址已经被覆盖,这样我们就确定了漏洞触发点

解决方案

  1. 微软已经对此漏洞做出了修复

    • 下载https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882 更新补丁进行修补
    • 开启Windows Update功能,定期对系统进行自动更新
  2. 由于该公式编辑器已经17年未做更新,可能存在大量安全漏洞,建议在注册表中取消该模块的注册

    • 按下Win+R组合键,打开cmd.exe
    • 输入以下两条命令:
reg add  “HKLM\SOFTWARE\Microsoft\Office\Common\COM     Compatibility\{0002CE02-0000-0000-C000-000000000046} ” /v         “Compatibility  Flags”             /t  REG_DWORD /d                 0x400                
 
reg add  “HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\Common\COM     Compatibility\{0002CE02-0000-0000-C000-000000000046} ” /v         “Compatibility  Flags”             /t  REG_DWORD /d                 0x400 
发布了99 篇原创文章 · 获赞 89 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_38474570/article/details/98513146
今日推荐