freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

漏洞丨cve2017-11882
极安御信安全研究院 2022-12-20 23:40:12 184176
所属地 辽宁省

作者:黑蛋

一、漏洞简介

本次漏洞还是一个office溢出漏洞,漏洞编号cve-2017-11882。该漏洞是office一个组件EQNEDT32.EXE引起的栈溢出,通杀office版本2007-2016。

二、复现环境

系统版本

目标程序

调试工具

辅助工具

win7 sp1 x86

office2007

olldbg

Process-Monitor

三、漏洞复现

在这里呢,我是使用了Ridter师傅的exp进行分析的,网址:https://github.com/Ridter/CVE-2017-11882/
之后我们安装office2007,然后双击EXP,弹出计算器:


证明漏洞存在。

四、漏洞分析

首先我们需要找到溢出点,既然他弹出一个计算器,那么我们可以对CreateProcess函数或者WinExec下断点,尝试找到关键地方,用windbg附加office 2007,然后在CreateProcess函数和WinExec函数下断点:


然后g起来,用word打开exp:

结果发现并没有断下来,思考许久,猜测计算器不是word弹出来的,我们打开PCHunter查看进程:


可以看到计算器的父进程是cmd,但是cmd的父进程存在PID,但是在列表中却找不到PID为1404的进程,卡顿许久,猜测或许是cmd父进程隐藏了自己或者启动时间太短,启动完自己结束。想起了一个老软件Process-Monitor,使用Process-Monitor查看进程:


同样没有,这里我们需要开启Process-Monitor,然后再次用word打开exp:

现在可以很清晰看到cmd父进程是EQNEDT32.exe,以及他的路径。所以我们需要在EQNEDT32.exe中下断点,而不是word里面下断点。在这里我们需要设置一下-注册表,因为EQNEDT32.exe这个程序是被word带起来的,而他又会很快的结束,所以需要设置此程序启动就被附加:

HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\IMAGE FILE EXECUTION OPTIONS


这样,我们就完成了EQNEDT32.exe这个程序启动附加。接下来我们双击exp,olldbg成功附加EQNEDT32.exe,首先在对WinExce下断点,Ctrl+g(WinExec),然后在首部下断点:


go起来,成功停在断点处,说明计算器就是通过WinExce启动的,F8单步走过函数初始化过程,开辟栈空间等步骤,然后我们观察堆栈EBP+4的位置,就是函数返回地址:


跟进返回地址,可以看到这里调用了WinExec函数:


我们在call WinExec函数前面一句,以及call这条语句下断点:


然后关闭word,重新双击exp,然后在OD中运行起来:


可以看到他停在了call这条语句,并没有执行push eax,在这里我们可以判断出应该是上个函数返回值直接跳到了WinExec上,我们查找堆栈,向高地址查找,可以看到上个函数返回地址:

在堆栈+40的位置回车跟到上一层函数:


在此地点上方call函数下断点,然后重新运行,卡在断点处:

我们F7跟进去单步调试,看看哪里覆盖了返回地址,我们注意F7进去的第一个call:

首先给他下个断点,预防他是关键函数,然后再F8:


可以看到这里就是关键函数,刚走过这个函数就断在了WinExec函数上,我们重新调试,让断在刚才下的断点上,F7跟进去调试:


首先锁定堆栈返回地址,看看什么时候会被淹没,在这里我们已经找到关键地方,一串cmd字符,以及拷贝代码:

我们执行到返回,可以看到cmd这一串的地址正好是WinExec函数第一个参数:


也就是这里是通过淹没返回地址到WinExec上,然后通过修改字符串控制WinExec的参数,启动cmd打开计算器实现。通过启动cmd,打开了计算器,而之后的的AAAA等都是传给计算器参数,是无效的。我们可以在cmd测试一下:

五、exp简单生成

我们修改一下exp:


然后用010Editor打exp,找到cmd这串字符,修改为弹出截屏框:


接下来我们取消断点测试一下:


弹出了剪切屏,漏洞复现利用成功。

# 漏洞 # 黑客 # 系统安全 # CTF # 网络安全技术
本文为 极安御信安全研究院 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
极安御信安全研究院 LV.8
QQ交流群:434238324 官网:http://www.vultop.com/
  • 140 文章数
  • 33 关注者
0ctf babyheap
2023-09-07
世界级黑客丨电脑犯罪界的汉尼拔
2023-09-07
新PWN手必备环境(附详细步骤)
2023-08-31