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.exebp 30e9eb88设置断点,载入POC,成功断下,查看调用堆栈如下:

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

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

ESIsub_30D2810C返回值相关,跟进分析:

ECX值需回溯到sub_30F4CD58中:

回溯到sub_30F4CD58

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

点击收藏 | 0 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖