[漏洞分析]对CVE-2018-0802的分析

对CVE-2018-0802的分析

漏洞简介

这个漏洞依然出现在微软工具Equation Editor中的EQNEDT32.exe可执行程序。

漏洞分析环境与工具

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

漏洞复现

打开Office2003,点击菜单-插入-对象,找到公式3.0。接着打开OllyDbg附加进程。F9运行。回到word文档中打开测试文件,弹出了一个计算器。
在这里插入图片描述

漏洞分析

再次附加程序,在WinExec处下断点。运行程序。查看堆栈,找到一处能够得到正确反汇编的地址,在这个函数所在的函数开始处下断点。
在这里插入图片描述
在此运行程序,观察堆栈。当程序断下来的时候F8单步调试,发现经过好几次函数返回,才到达WinExec处,找不到缓冲区溢出的位置。这时按ESC键单步撤回,找到一个函数,在函数头下断点,反复几次可以找到缓冲区溢出的函数。
在这里插入图片描述
进入函数内部仔细分析,单步调试,观察堆栈,可以发现当走完这几条指令的时候外层函数的返回地址被覆盖。在外层函数中有个递归,会在调用自己一次,只不过第二次调用的时候,并没有发生缓冲区溢出。
在这里插入图片描述
在这里插入图片描述
继续单步几次就会到达调用WinExec函数的地方。
在这里插入图片描述
在这里插入图片描述
用IDAPro打开EQNEDT32.exe,找到相应的函数。F5进行反编译查看源码。可以看到在使用strcpy的时候并没有检查字符串的长度,从而导致了缓冲区的溢出。
在这里插入图片描述

漏洞成因

在进行字符串拷贝的时候没有考虑到字符串的长度,从而导致了缓冲区溢出。

漏洞利用

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

猜你喜欢

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