首页
社区
课程
招聘
[原创]CVE-2010-3333 简单的栈溢出漏洞复现(适合新手)
发表于: 2018-11-29 21:39 6309

[原创]CVE-2010-3333 简单的栈溢出漏洞复现(适合新手)

2018-11-29 21:39
6309

CVE-2010-3333(简单的漏洞利用)


虚拟机环境:Windows XP SP3

调试器:Immunity Debugger ,OD

反汇编器:IDA Pro

漏洞软件:Microsoft Office Word 2003 (MSDN I tell you 有相关资源下载)


一、相关介绍


RTF文件格式

RTF(Rich Text Format)格式是Microsoft公司为进行文本和图像信息格式的交换而制定的文件格式,它适用于不同的设备、操作环境和操作系统。RTF文件的基本元素是正文(TEXT)、控制字(Control Word)、控制符号(Control Symbol)和群组(Group)

(1)控制字是RTF用来标记打印控制符和管理文档信息的一种特殊格式的命令,RTF用它作为正文格式的控制代码,每个控制字均以一个反斜杠\开头,由a~z小写字母组成,通常应该不包含任何大写字母,而分隔符标志着控制字名称的结束。它的使用格式为:\字母序列<分隔符>

(2)控制符号由反斜杠后跟一个单独的、非字母的字符,表示一个特定的符号

(3)群组由包含在大括号中的文本、控制字或控制符组成。左括符’{‘表示组的开始,右括符'}'表示组的结束。每个组包括文本和文本的不同属性。RTF文件也能同时包括字体、格式、屏幕颜色、图形、脚注、注释(注解)、文件头和文件尾、摘要信息、域和书签的组合,以及文档、区段、段落和字符的格式属性

下图摘自样本


\rtf1 —— RTF版本

\shp —— 绘图对象

\sp —— 绘图对象属性定义

\sn pFragments —— 定义属性名称,pFragments段是图形的附加部分,属于数组结构。它允许图形包含多个路径和分段,该属性列出图形各个碎片

\sv —— 定义属性值

                                                                                                    摘自《漏洞战争》

二、样本分析(样本使用msf生成,附至文末)

1.关闭OD的忽略异常,附加word2003,加载样本文件


2.产生异常,查看0x130000地址属性(异常原因该地址不具备写入属性)


3.异常点(30E9EB88)下断,重新加载运行


4.此时查看拷贝的目标地址,发现是一个栈地址,并且距离函数返回地址仅0x14字节


5.追踪返回地址便可知由下图函数调用产生溢出


6.查看IDA


7.溢出原理:由于拷贝字节数写在rtf文件中,可由我们自行修改(即未对拷贝字节数做任何限制),从而可以覆盖栈内重要指针完成漏洞利用



三、漏洞利用

1.现在由我们自行构造poc文件,打开immunitydbg,附加word200,查找jmp esp指令



2.选择jmp esp 跳板指令地址 0x7344745d


3.追踪返回地址,跟入返回函数,发现函数返回retn 0x14



4.则我们的poc文件结构如下图




5.在构造文件时我们发现存储的是数据的ascii的形式,例如我们的拷贝字节数0xc8ac,

对应的存储数据为 61(a) 63(c) 63(c) 38(8),即原先2字节数据拆分成4字节ascii存储



注:shellcode以字符串存储时字母请小写

6.将生成的数据二进制粘贴至目标poc处


7.保存运行


漏洞利用成功!


[课程]Linux pwn 探索篇!

最后于 2018-11-29 21:50 被F4our444编辑 ,原因: 修改
上传的附件:
收藏
免费 3
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//