本文主要是介绍【漏洞复现】噩梦公式二代漏洞|EQNETD32.exe栈溢出漏洞|公式编辑器栈溢出漏洞(CVE-2018-0802),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、CVE-2018-0802
在潜伏17年的“噩梦公式”漏洞(OFFICE公式编辑器EQNEDT32.exe栈溢出漏洞-CVE-2017-11882)被曝光修补之后,之前的漏洞程序 EQNEDT32.EXE 在windows 10系统下仍然没有开启ASLR保护,因此其利用非常容易,在修补之后可以发现微软的发布的是二进制补丁而不是对该程序源码进行重新编译,因此猜测该程序的源码可能已经遗失,如果真实情况是这样,那么公式编辑器这个进程将成为其他漏洞发现和利用的“圣地”,因为微软将很难从源代码级别去排查这个程序是否还有其他漏洞。此次“噩梦公式”的姊妹篇 CVE-2018-0802 就在这一背景下被业界所发现。
windows在2017年11月份发布补丁,修复了cve-2017-11882(EQNEDT32.EXE公式编辑器的栈溢出漏洞),由于以上原因CVE-2018-0802 再一次利用了EQNEDT32.EXE公式编辑器的栈溢出漏洞,该漏洞的成因是EQNEDT32.EXE进程在读入包含MathType的ole数据时,在拷贝公式字体名称时没有对名称长度进行校验,从而造成栈缓冲区溢出,这个漏洞是CVE-201-11882的补丁绕过漏洞,网上也出现了两种漏洞结合的POC。
二、准备
攻击机:kali-2019 192.168.75.154
靶机:win7_x86(关闭防火墙) 192.168.75.139
三、复现
1、下载 exp ,git clone https://github.com/Ridter/RTF_11882_0802
2、打开 msf 设置攻击 IP,准备接受反弹 shell
执行 exploit 进行监听
3、制作 payload 文档,将生成文档发送到靶机
4、在靶机打开 exp.doc,第一次打开需要点击启用编辑,启用后攻击机 getshell 成功
四、技术细节
POC 的 RTF文件继续使用objupdate字段来使OLE对象的自动更新和加载,利用的漏洞点还是 font name,栈溢出点同样是 strcpy 函数,成因也是EQNEDT32.EXE进程在读入包含MathType的ole数据时,在拷贝公式字体名称时没有对名称长度进行校验,从而造成栈缓冲区溢出,还有一个问题是这个漏洞在未打补丁的系统中并不会执行,因为CVE-2017-11882覆盖返回地址需要的长度远远小于这个样本,而在执行这个样本的时候会先触发CVE-2017-11882导致Crash,因此网上也出现了将两种洞组合的POC,在CVE-2017-11882利用不成功后会利用CVE-2018-0802,具体可参考 11882 的分析。
参考:
https://cloud.tencent.com/developer/news/125225
https://www.freebuf.com/vuls/160115.html
https://www.cnblogs.com/Get-Me/p/b3dac8831fa0284563d012ecdf9dbe91.html
https://blog.csdn.net/DarkHQ/article/details/80454965
https://www.freebuf.com/vuls/160386.html
这篇关于【漏洞复现】噩梦公式二代漏洞|EQNETD32.exe栈溢出漏洞|公式编辑器栈溢出漏洞(CVE-2018-0802)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!