CVE-2012-0158 漏洞分析报告
Office 2003 sp3(CVE-2012-0158)漏洞分析报告
软件名称:Office 2003 sp3 软件版本:2.0 漏洞模块:MSCOMCTL.ocx 模块版本:2.0.0.0 编译日期:2003 |
操作系统:Windows XP/2003/7/8.1/10 漏洞编号:CVE-2012-0158 危害等级:超危 or 高危 or 中危 or 低危 漏洞类型:栈溢出 威胁类型:本地 |
- 软件简介
Microsoft Office 2003 是微软公司针对Windows操作系统所推出的办公室套装软件,包含WORD、EXCEL、PowerPoint等三大组件,用处广泛,多以普及办公室、行政等。与办公室应用程序一样,它包括联合的服务器和基于互联网的服务。
- 漏洞成因
2.1漏洞介绍
CVE-2012-0158漏洞是一个栈溢出漏洞,该漏洞是微软Office办公软件中的MSCOMCTL.oce中MSCOMCTL.ListView控件时检查错误造成的,攻击者可以通过精心构造的数据控制程序EIP实现任意代码执行
CVE-2012-0158漏洞的微软编号是ms02-027
2.2复现漏洞
准备:获取造成漏洞的poc,安装 office 2003 sp3
使用winworld直接执行poc效果:
2.3调试漏洞
设置OD不忽略异常,不跳过异常,附加WINWORD程序
2.3.1定位漏洞触发点
分析溢出点附近堆栈,溢出点下面的堆栈一般是刚刚调用的函数的上一层函数堆栈,溢出后
可能已经破坏,溢出点上面的堆栈一般是刚刚执行的函数堆栈,可以发现有一个地址
275C8A0A,可以看出这个地址是 MSCOMCTL 模块中的地址,由此判断刚刚执行的函数中执
行了 MSCOMCTL 模块中的代码
多次调试发现无随机基址
在调用275C8A0A函数的外部函数下断点
重新调试,观察其返回地址在何处被改变
可以看出返回地址在275C8A05地址,调用MSCOMCTL.275C876D函数后被改变
接下来分析该函数,找到MSCOMCTL.OCX文件,使用IDA找到该函数静态分析一下
发现该函数中有拷贝函数
使用OD进行调试发现是拷贝出了问题,栈破坏将外层函数返回地址覆盖
调用它的函数,发现限定的字节数v7和dwBytes都是局部变量
且同为8282
使用010查看文件发现,两个字节数存储在文件中
改变数字,再次调试
EDI是参数,也就是第一个数是传进来的数字dzbyte,第二个数是限定的字节数v7
也就是可以随意的更改缓冲区的大小,填充时,局部变量存不下,破坏了堆栈
参考:
- 利用过程
漏洞利用的步骤:
1. 分析和设计漏洞 shellcode 的结构
2. 在运行的程序中寻找跳板指令地址
jmp esp
使用ImmunityDebugger+mona.py
将mona.py放入ImmunityDebugger的PyCommands目录中
在ImmunityDebugger中使用 !mona modules命令 遍历模块
找到 Rebase ,SafeSEH, ASLR,NXCompat 为 False ,而 OS DLL 为 True 的系统模块。(也就是,无保护,系统会调用的模块)
msvbvm60.dll
使用!mona find -s "\xff\xe4" -m msvbvm60.dll命令,在找到的模块中,查找jmp esp指令
找到一个可读可执行的jmp esp指令,0x729a0535
以小端方式放入文件缓冲区覆盖返回地址的位置
- PoC
jmp esp指令地址有了,接下来是写 shellcode
shellcode模板:
弹出一个messagebox,helloworld
CVE-2012-0158 漏洞分析报告的更多相关文章
- WiFi网络WPA2 KRACK漏洞分析报告
作者:东帆@阿里安全技术平台团队 -------- 0x00 漏洞概述 安全研究员Mathy Vanhoef发现的WPA2协议的KRA(Key Reinstallation Attacks)漏洞, ...
- Android APP通用型拒绝服务、漏洞分析报告
点评:记得曾经有段时间很多SRC平台被刷了大量APP本地拒绝服务漏洞(目前腾讯金刚审计系统已经可检测此类漏洞),移动安全团队发现了一个安卓客户端的通用型拒绝服务漏洞,来看看他们的详细分析吧. 0xr0 ...
- office(CVE-2012-0158)漏洞分析报告
2019/9/12 1.漏洞复现 ①发现崩溃 ②找到漏洞所在的函数,下断点,重新跑起来,单步调试,找到栈被改写的地方 ③分析该函数 把MSCOMCTL拖入IDA,查看该函数代码 ④查看调用栈,回溯. ...
- Intel CPU 漏洞分析
Intel CPU漏洞分析报告 预备知识 存储分级 由于计算机存储分级的特性(第一级:寄存器,第二级:高速缓存,第三级:内存,第四级:磁盘),每一级之间的访问速度差距高达数量级.所以处理器会将用到的数 ...
- CVE漏洞分析
分析cve-2018-9489漏洞和download content provider(CVE-2018-9468, CVE-2018-9493, CVE-2018-9546), 每人至少选择一个漏洞 ...
- Google发布SSLv3漏洞简要分析报告
今天上午,Google发布了一份关于SSLv3漏洞的简要分析报告.根据Google的说法,该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均 ...
- 漏洞分析:CVE 2021-3156
漏洞分析:CVE 2021-3156 漏洞简述 漏洞名称:sudo堆溢出本地提权 漏洞编号:CVE-2021-3156 漏洞类型:堆溢出 漏洞影响:本地提权 利用难度:较高 基础权限:需要普通用户权限 ...
- Java反序列化漏洞分析
相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 htt ...
- [转帖]Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626)
Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626) ADLab2019-03-15共23605人围观 ,发现 4 个不明物体安全报告漏洞 https://www.f ...
随机推荐
- 【设计模式】DDD 设计理念
From: https://liudongdong1.github.io/ 微服务架构,在集中式架构中,系统分析.设计和开发往往是独立进行的,而且各个阶段负责人可能不一样,那么就涉及到交流信息丢失的问 ...
- 阿里云视频点播获取视频点播的video信息
背景 因为在项目中需要使用阿里云的视频点播服务,需要获取视频点播的时长信息. 工具类 生成签名串Signature SignatureUtils.java package com.meeno.wzq. ...
- npm常用命令及其node相关工具汇总
它是一个事件驱动异步I/O单进程的服务端JS环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好. 浏览器是JS的前端运行环境. Node.js是JS的后端运行环 ...
- 如何在WPF中定义窗体模板
参考网址:https://www.cnblogs.com/chenxizhang/archive/2010/01/10/1643676.html可以在app.xaml中定义一个ControlTempl ...
- C#硬件访问(摄像头、麦克风)
#需要引用:AForge类库.Microsoft.DirectX using System;using System.Windows.Forms;namespace CameraTest{ publi ...
- WebAPI中controller添加[AllowAnonymous]无效的解决方法
对于Methods添加[AllowAnonymous]可以进行匿名访问,但是对于Controller添加时无效 public class AuthAttribute : AuthorizationFi ...
- Javascript - 异步操作和读取文件
node.js读取文件 node.js内置了异步读取文件的模块,可以很方便地读取文件的数据.先创建三个txt文档,在根目录下创建一个readFile.js 输入以下代码,然后在vscode的终端中输入 ...
- ☕【Java技术指南】「TestNG专题」单元测试框架之TestNG使用教程指南(上)
TestNG介绍 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit, 功能都差不多, 只是功能更加强大,使用也更方便. 详细使用说明请参考官方链接:https://testng ...
- 刷题-力扣-107. 二叉树的层序遍历 II
107. 二叉树的层序遍历 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-level-order-tr ...
- (六)羽夏看C语言——函数
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...