[漏洞分析]对CVE-2017-11882的分析

对CVE-2017-11882的分析

漏洞简介:

这个漏洞出现在一个老旧的微软工具Equation Editor中的EQNEDT32.exe可执行程序,这个工具的作用是插入数学公式,虽然在Office 2007后就被取代,但出于早期兼容性的考虑仍然得以保留。如图所示。
在这里插入图片描述

漏洞分析环境与工具

漏洞分析环境:Window 7专业版(32位)
带有漏洞的软件:office 2003 sp3
工具:OllyDbg、IDAPro

漏洞复现

跟据漏洞介绍,我们得知这个工具的实现是一个单独的exe文件,所以应该先将这个exe打开。在用OllyDbg调试的时候,应当附加EQNEDT32.exe程序,而不是附加Word文档那个exe.

首先,打开Office2003,点击菜单-插入-对象,找到公式3.0。
在这里插入图片描述

在这里插入图片描述
这样EQNEDT32.exe就开始运行了。接着打开OllyDbg附加进程。F9运行。
在这里插入图片描述
回到word文档中打开测试文件,发现弹出了一个计算器。

漏洞分析

因为弹出了一个计算器,所以我们可以推断是调用了WinExec之类的运行程序的进程。再次重复以上步骤,对WinExec、CreateProcess、ShellExecute之类的函数下断点。运行结果如图所示。
在这里插入图片描述
观察堆栈,可以找到一个函数,在这个函数所在的函数开始处下断点。
在这里插入图片描述
在这里插入图片描述
再次运行,当断点触发之后单步调试,观察堆栈。发现运行该条指令后,函数的返回地址被修改。在此观察堆栈的情况。
在这里插入图片描述
在这里插入图片描述
当这个函数运行完之后,就返回到这个地址上面去,而这个地址所对应的汇编指令是call WinExec,这个函数调用是在exe中,并非在ShellCode中。这个地址下面对应着两个参数分别是一个字符串命令和一个整型变量。
在这里插入图片描述
对触发漏洞的函数进行详细分析,找到该进程的所在的位置,使用IDAPro打开,定位到触发漏洞的函数。F5进行分析。
在这里插入图片描述

漏洞成因

将一个字符串拷贝到一个char类型变量中,导致缓冲区溢出。

漏洞利用

打开指定的网页,在cmd命令中有“explorer 网址”这样一条命令可以打开指定的网页,所以在特定程序中进行修改。
在这里插入图片描述
将16进制复制出来,用010Editor打开样本,将16进制复制到指定的位置。再次打开样本就不会弹出计算器。而是我们所指定的网页。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35381323/article/details/83590359