CVE-2010-3333:Microsoft RTF 栈溢出漏洞调试分析
0x01 前言
- CVE-2010-3333 漏洞是一个栈溢出漏洞,该漏洞是由于 Microsoft文档在处理 RTF 数据的对数据解析处理错误,在进行内存操作时没有对操作的数据进行长度限制,导致存在内存漏洞,根据漏洞可以很容易构造出恶意的 RTF 文档,危害较大
 - 环境
windows XP sp3(未启用 ASLR 和 DEP) - 漏洞软件
Microsoft Office 2003(提取码:woi9) - 分析工具
Windbg(Windbg32,Windbg64) - metasploit 构造的样本
能触发漏洞产生异常的 Poc,由 metasploit 构造(提取码:px76) - 目的
通过栈回溯的方式找到漏洞溢出点,分析漏洞成因和利用条件 
0x02 通过 metasploit 来构造样本
- Kali 王牌工具 metasploit,渗透测试必备。查一下这个漏洞的利用信息

 - Microsoft Office 2002、2003、2007的版本都有中枪,前提是没有打过补丁

 - 生成一下 Poc,这里并不是攻击样本,只是验证漏洞的;本来想演示攻击的,但是靶机网卡出问题了

 - 以下就是 Poc 的样本,用 word 打开它就应该会触发异常

 
0x03 定位异常点
- 使用 Windbg 载入

 - 附加进程


 - 运行之后,载入样本文档


 - Windbg 定位在了异常处

 
0x04 函数调用分析
- 在异常处断点,重新运行一遍


 - 查看堆栈

 - 在 mso!Ordina12118+0x272f 中调用了异常函数

 - 下 0x30f0da9a 的断点,重新运行

 - 单步跟踪


 - 这个函数的地址和异常点非常接近,按 t 进入该函数

 - 继续单步跟踪

 - 来到异常触发点,可以看出异常触发点由函数 mso!Ordinal2118+0x272f 调用,此时 edi 的地址距离栈顶有 0x10 个字节,再加上 ebp 就是差 0x14 个字节溢出到返回地址

 
0x05 样本分析
- 在异常处查看 esi 和 edi 的地址,其中 esi 中是样本中构造的数据,0x12a2b0 中是将要被复制的地址

 - 顺便看一下内存页的状况和内存页的权限,可以看出都是可以读写的,好像是说明内存页没有受到 DEP 的保护耶

 - 单步执行

 - 可以发现正在一步一步的复制,直到复制到字符串为 6Aa7 时才完全覆盖返回地址,也就是 0x14 到 0x18,记下此时的 16 进制数据为 36 41 61 37

 - 看一下样本的数据,从 acc8 往后复制的数据和样本当中是一模一样的

 - 最后重新运行一下,不下任何断点,直到异常处查看堆栈信息,发现此时的堆栈已经被样本数据完全的溢出覆盖了,函数的返回地址为 0x37614136,刚好为刚才 0x14 到 0x18 的值

 
0x06 利用
- ASLR 没有,内存页也是可读写的(可能根据操作系统分情况讨论),SafeSEH 没有,什么防护也没有

 - 既然没有防护,那么很简单利用 jmp esp 这类的固定地址直接跳到 shellcode 即可
 
0x07 总结
- 栈溯源还是比较简单的,但是寻找漏洞难度很高,需要根据不同的情况来分析,Windbg 确实没有 OD 来的顺手,但分析 Windows 程序时还是有它的优势的
 - 参考资料:0day安全:软件漏洞分析技术 + 漏洞战争
 
CVE-2010-3333:Microsoft RTF 栈溢出漏洞调试分析的更多相关文章
- CVE-2012-0158:Microsoft Office MSCOMCTL.ocx 栈溢出漏洞调试分析
		
0x01 Lotus Blossom 行动 在 2015 年 6 月,国外安全厂商 Palo Alto Networks 的威胁情报团队 Unit42 发现了一起针对东南亚政府的一次间谍行为,试图获取 ...
 - CVE-2011-0104:Microsoft Office Excel 中的栈溢出漏洞调试分析
		
0x01 前言 CVE-2011-0104 是 Microsoft Office 中的 Excel(没有打补丁的情况下)表格程序在处理 TOOLBARDEF 中的 Record 字节时没有对 Len ...
 - CVE-2018-0798:Microsoft office 公式编辑器 Matrix record 字段栈溢出漏洞调试分析
		
\x01 前言 2018 年 1 月 9 日,Office 公式编辑器再曝出新漏洞,编号为 CVE-2018-0798.提起公式编辑器大家都不陌生,之前的 CVE-2017-11882 和 CVE-2 ...
 - CVE-2017-11882:Microsoft office 公式编辑器 font name 字段栈溢出通杀漏洞调试分析
		
\x01 漏洞简介 在 2017 年 11 月微软的例行系统补丁发布中,修复了一个 Office 远程代码执行漏洞(缓冲区溢出),编号为 CVE-2017-11882,又称为 "噩梦公式&q ...
 - CVE-2010-3333-office RTF栈溢出漏洞分析
		
0x00 前言 此漏洞是根据泉哥的<漏洞战争>来学习分析的,网上已有大量分析文章在此只是做一个独立的分析记录. 0x01 复现环境 操作系统-->windows7 x64 软件版本- ...
 - CVE-2018-0802:Microsoft office 公式编辑器 font name 字段二次溢出漏洞调试分析
		
\x01 前言 CVE-2018-0802 是继 CVE-2017-11882 发现的又一个关于 font name 字段的溢出漏洞,又称之为 "第二代噩梦公式",巧合的是两个漏洞 ...
 - CVE-2011-0104:Microsoft Office Excel 栈溢出漏洞修复分析
		
0x01 前言 上一篇讲到了 CVE-2011-0104 漏洞的成因和分析的方法,并没有对修复后的程序做分析.之后在一次偶然的情况下,想看一看是怎么修复的,结果却发现了一些问题 环境:修复后的 EXC ...
 - CVE-2012-0003:Microsoft Windows Media Player winmm.dll MIDI 文件堆溢出漏洞调试分析
		
0x01 蜘蛛漏洞攻击包 前言:2012 年 2月,地下黑产中流行着一款国产名为蜘蛛漏洞的攻击包 -- "Zhi-Zhu Exploit Pack",该工具包含 5 个漏洞,都是在 ...
 - CVE-2010-2553:Microsoft Cinepak Codec CVDecompress 函数堆溢出漏洞调试分析
		
0x01 前言 微软提供一个叫 Cinepak 的视频解码器,通过调用 iccvid.dll 这个动态链接库文件可以使用这个解码器:微软自带的 Windows Media Player(视频音频软件) ...
 
随机推荐
- 基于4H-SIC的先进集成电路用n型LDMOS晶体管
			
基于4H-SIC的先进集成电路用n型LDMOS晶体管 摘要: 通过对具有不同的设计方式的具有减小的表面电场的横向4H-SIC-N型-横向扩散金属氧化物半导体(LDMOS)晶体管进行测量和模拟,得到了得 ...
 - 2020年12月-第01阶段-前端基础-认识HTML
			
1. HTML 初识 HTML 指的是超文本标记语言 (Hyper Text Markup Language)是用来描述网页的一种语言. HTML 不是一种编程语言,而是一种标记语言 (markup ...
 - Java安全初学之反射
			
前言: 复现fastjson的时候深深意识到了需要好好学习一下Java和Java安全,激情的学习了一番java安全中重要的几部分:反序列化.反射.rmi.动态代理,从反射开始做个总结. 反射:java ...
 - 腾讯云发布存储一体机TStor,打通全面上云“最后一公里”
			
随着云计算.大数据.人工智能等技术的发展,各行各业加速数据化转型,数据容量以前所未有的速度增长,本地存储难以适应数据的指数式增长. 另一方面,公有云因其易扩展.低成本.安全稳定的特点,逐渐被企业广泛应 ...
 - Everything is Serverless,从开源框架对比说起
			
摘要:Everything is Serverless. 在众多云计算解决方案中,Serverless 逐渐崭露头角,受到了很多关注并且发展迅猛,今天就关于serverless 开源框架细说二三. 什 ...
 - WPF 基础 - x 名称空间详解
			
名称 种类(默认Attribute) 备注 x:Array 标记拓展 可作为 ListBox.ItemsSource 的值 x:Class 指定与 .cs 中哪个类合并,所指示的类型在声明时使用 pa ...
 - Less常用变量与方法记录
			
需求:仅记录Lsee常用变量与方法定义,便于使用.-- @color: #000; @title-color: #000; @bg-color: #fff; @small-font: 12px; @l ...
 - P2764 最小路径覆盖问题 题解(二分图)
			
建图思路很明确,拆点跑最大匹配,但这明显是个二分图的题题解居然只有一篇匈牙利算法. 发一种和之前那篇匈牙利思路略有不同的题解. 本题的难点就是如何输出,那么我们不妨在建图的时候加入一个原则,即:连边时 ...
 - Java并发编程之队列
			
Deque(双端队列) 子接口BlockingDeque,实现类如下: ArrayDeque:大下可变的数组双端队列,不允许插入null LinkedList:大小可变的链表双端队列,允许插入null ...
 - python编写自己的base64加解密工具
			
0x00 Base64编码的用途 在网络传输中,不是所的的内容都是可打印字符,其中绝大多数数据是不可见字符,base64可以基于64个可打印字符来表示这些带有不可打印字符的传输数据. 0x01 Bas ...