漏洞丨cve2017-11882

news2025/1/25 9:15:19

作者:黑蛋

一、漏洞简介
本次漏洞还是一个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这串字符,修改为弹出截屏框:

 

 

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

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL基础教程】DDL语句详细介绍

前言 本文为 【MySQL基础教程】DDL语句 相关相关内容进行详尽介绍,下边将对数据库操作(包括:查询所有数据库、查询当前数据库、创建数据库、删除数据库、切换数据库等),表操作(包括:查询创建、数…

微信小程序分包及案例

文章目录5. 分包6. 独立分包7. 分包预下载8. 案例-自定义tabbar5. 分包 分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时打包成不同的分包,用户在使用 时按需进行加载。 可以优化小程序首次启动的下载时间在多团队共同…

微信公众号开发—扫描二维码实现登录方案

😊 作者: 一恍过去💖 主页: https://blog.csdn.net/zhuocailing3390🎊 社区: Java技术栈交流🎉 主题: 微信公众号开发—扫描二维码实现登录方案⏱️ 创作时间: 2022…

非零基础自学Golang 第13章 并发与通道 13.1 概述

非零基础自学Golang 文章目录非零基础自学Golang第13章 并发与通道13.1 概述13.1.1 并行与并发13.1.2 Go并发优势第13章 并发与通道 并发是指在同一段时间内,程序可以执行多个任务。 随着社会需求的发展,光靠硬件的提升是无法满足高并发的需求的&#…

[前端攻坚]:数组去重的几种方法

总结一些日常需要用到的一些api,也是在一些面试中会经常出现的题目,今天分享的是数组去重的几个不同的方法, 同时文章也被收录到我的《JS基础》专栏中,欢迎大家点击收藏加关注。 数组去重的方法 1.set去重 2.map去重 3.for循环in…

Python安装Pycrypto

前言 安装 使用以下命令安装 pip install pycrypto2.6.1报错 如果在安装过程中出现如下错误 则说明系统缺乏相应python开发包,需要进行安装对应的python开发包 解决 在CentOS下,如果是python2.7则使用如下命令安装 yum install python-devel是pyt…

Pytest用例运行及规范

温馨提示 本篇约1600字,看完需3-5分钟,学习学半小时,加油! 先看普通函数运行顺序 import pytestdef test_one():print("我是清安")def test_02():print("--02--")def test_a():print("--a--")de…

BP神经网络的最简Python实现

文章目录神经元BP原理及实现测试BP,就是后向传播(back propagation),说明BP网络要向后传递一个什么东西,这个东西就是误差。 而神经网络,就是由神经元组成的网络,所以在考虑BP之前,还不得不弄清楚神经元是…

endata 电影票房响应数据破解

本文仅供参考学习,如有侵权可联系本人 目标网站 aHR0cHM6Ly93d3cuZW5kYXRhLmNvbS5jbi9Cb3hPZmZpY2UvQk8vWWVhci9pbmRleC5odG1s加密入口分析 在异步请求那里可以看到请求接口,请求参数并未加密只是响应内容进行了加密,暂时也无法判断加密方…

JavaWeb的Servlet学习之Request03

目录 1.Request 1.1Request执行流程 1.2request对象和response对象的原理 1.3 request对象继承体系结构 1.4request功能: 1.3.1获取请求消息数据 1.获取请求行数据 2.获取请求头 3.获取请求体数据 4.其他功能 4.1获取请求参数通用方式:不论get…

开源CA搭建-基于openssl实现数字证书的生成与分发

目录 一、前言 二、openssl介绍 三、openssl的常用用法 (一)单向加密 (二)生成随机数 (三)生成公钥,私钥 1.生成私钥 2.提取公钥 四、搭建CA (一)创建根CA私钥…

Linux的camera驱动 摄像头调试方法

CameraInfo类用来描述相机信息,通过Camera类中getCameraInfo(int cameraId, CameraInfo cameraInfo)方法获得, 主要包括以下两个成员变量facing,facing 代表相机的方向, 它的值只能是CAMERA_FACING_BACK(后置摄像头&am…

Golang 【basic_leaming】1 基本语法

阅读目录Go 语言变量Go 语言 - 声明变量1. 标准格式2. 批量格式Go 语言 - 初始化与定义变量1. 标准格式2. 编译器推导类型格式3. 短变量声明与初始化Go语言 - 多变量同时赋值Go 语言 - 匿名变量参考资料Go 语言整型(整数类型)1 自动匹配平台的 int 和 un…

新项目为什么决定用 JDK 17了

大家好,我是风筝。公众号「古时的风筝」,专注于后端技术,尤其是 Java 及周边生态。文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面。 最近在调研 JDK 17,并且试着将之前…

阴差阳错,阴阳之变

北京的第一批“杨康”们已经返回到工作岗位,这其中就包括我。简单总结一下我的感染和康复过程,给大家做个样本吧。我属于北京放开的第一波感染者,12.9日当天感觉嗓子干,毫不犹豫,果然是中招了;周末开始发烧…

特朗普发行NFT惹群嘲,上线售罄现“真香定律”

文/章鱼哥出品/陀螺财经特朗普14日在其创建的社交平台truth social上发帖称,“美国需要一个超级英雄”。他还预告自己将于当地时间15日宣布“重大消息”。据《新闻周刊》报道,特朗普当日在其社交平台上发了一段十几秒的视频,里面有一个他站在…

Windows实时运动控制软核(三):LOCAL高速接口测试之C++

今天,正运动小助手给大家分享一下MotionRT7的安装和使用,以及使用C对MotionRT7开发的前期准备。 01 MotionRT7简介 MotionRT7是深圳市正运动技术推出的跨平台运动控制实时内核,也是国内首家完全自主自研,自主可控的Windows运动控…

Linux搭建测试环境详细步骤

本文讲解如何在Linux CentOS下部署Java Web项目的步骤 环境准备 (1)Linux系统(2)JDK(3)Tomcat (4)MySQL工具下载 一、Linux系统 本文主要是Linux CentOS7为例 自己在家练习小项…

[拆轮子] PaddleDetection 中的 COCODataSet 是怎么写的

今日,辗转反侧,该💩的代码就是跑不成功,来看看 COCODataSet 到底是怎么写的,本文只参考当前版本的代码,当前版本 PaddleDetection2.5 COCODataSet 源码见附录 COCODataSet 类内部就三个函数: …

词义和词义消歧

Synsets(“synonym sets”, effectively senses) are the basic unit of organization in WordNet.同义词集 对于许多应用程序,我们希望消除歧义 • 我们可能只对一种含义感兴趣 • 在网络上搜索chemical plant 化工厂,我们不想搜到香蕉中的化学物质 所以…