-
-
[原创]Note——CVE-2010-3333
-
发表于:
2020-12-5 11:49
4919
-
0x01 漏洞描述
-
漏洞成因:栈溢出漏洞。MSO.DLL在处理pFragments
数组时未校验复制长度,故可构造数据造成栈溢出,劫持执行流。
-
影响版本:Microsoft Office XP SP3, Office 2003 SP3, Office 2007 SP2, Office 2010, Office 2004 and 2008 for Mac, Office for Mac 2011。
0x02 漏洞分析
分析环境:
OS版本:Windows XP SP3
Word版本:11.0.5604.0
MSO.DLL版本:11.0.5606.0
使用msf生成POC:

WinDbg附加WINWORD.exe
,打开POC文档,崩溃点如下:

崩溃原因是EDI
指向内存区域为只读属性:

重新附加WINWORD.exe
,bp 30e9eb88
设置断点,载入POC,成功断下,查看调用堆栈如下:

IDA载入MSO.DLL,定位到0x30F4CC93
位置,查看其如何传递参数:

EDI
指向sub_30F4CC5D
中局部变量,距离函数返回地址0x14字节,而sub_30E9EB62
在执行复制操作之前并未检查长度,故可以造成栈溢出。
ESI
与sub_30D2810C
返回值相关,跟进分析:

而ECX
值需回溯到sub_30F4CD58
中:

回溯到sub_30F4CD58
:

回溯到此,三个参数的传递过程都已清晰,参数1:

参数2为ebp-10h
,参数3为0。
借由WinDbg查看参数1具体值,bp 30F4CD58
:

bp 30F4CC73
:

bp 30F4CC7D
:

最终传递给sub_30E9EB62
三个参数如下:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-12-5 11:51
被erfze编辑
,原因: