CVE-2012-0158-Microsoft Office MSComCtl.ocx 栈溢出漏洞

懒得装office 2003了,直接用魔鬼训练营的英文版xp sp3

这个漏洞跟Lotus Blossom行动有关

基于OffVis工具的Office漏洞分析方法

打开poc看看

blob.png

eip被覆盖成0x41414141了

由于我这边immunity debugger看不到栈,是空的

我就用od看看吧,但还是看不到,那就用windbg吧,⊙﹏⊙b汗

可惜也看不到

(3a4.d3c): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=00000000 ebx=01fa06b0 ecx=7c91003d edx=00140608 esi=01bf1a04 edi=00000000
eip=41414141 esp=001278ec ebp=00000000 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246
<Unloaded_PI32.dll>+0x41414140:
41414141 ??              ???
0:000> kb
ChildEBP RetAddr  Args to Child              
WARNING: Frame IP not in any known module. Following frames may be wrong.
001278e8 00000000 00000000 00000000 00000000 <Unloaded_PI32.dll>+0x41414140

看一下样本,应该是这里覆盖到了返回地址

blob.png

那我把后面的0都删掉估计就可以看到了,实践一下,连触发异常都不行

发现我错了,原来是向上看,

blob.png

可以看到这个返回地址在下面sub_275C89C7函数中

blob.png

那我们在这里下断看看吧

由于是动态加载,我们设置在载入模块的时候会断下来,这时再去下断点即可

blob.png

贮备载入的模块也会是红色的,这是过去下断点即可,

blob.png

我们在sub_275C89C7下断后单步到下面,发现时这个函数造成的溢出

blob.png

那我们进入sub_275C89C7后,执行完mov ebp,esp后 对返回地址(即ebp+4)下内存写入或者硬件写入断点

那就会停在下面的语句blob.png那我们跟一下那个函数,申请了一个比较大堆空间,0x8282

blob.png

下面复制时的ecx也是0x8282

blob.png

看ida的话就是这个

blob.png

继续看看里面

1489847829249764.png

由于rtf文件是以文本保存OLE数据(0xD0CF11E0是OLE前面,代表DOCfile),就是下面的读取进去就当做十六进制,所以OffVis无法解析,我们将D0CF11E0开始以十六进制到一个文件中就可以了

blob.png

blob.png

如下图,保存为.doc

blob.png


CLSID是指windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件分配一个唯一表示它的ID代码

我们这里也可以看到blob.png

我们看到0x41414141在第4个Directory的data那里

blob.png

我们再来看看

blob.png

再看看ida那里,那么size的值也是来源于这里了

blob.png

漏洞利用

我们看看漏洞利用,返回地址poc都帮我们定位了

blob.png

看看ida

blob.png

动态调试一下

blob.png最由于是retn 8, 所以只有有8个0x90做垃圾字符,之后jmp esp到栈上执行shellcode,

blob.png

但这里的shellcode应该有点问题,没有弹出计算器

漏洞修复

blob.png

打赏作者
喜欢本博客,打赏让博客永久运行,多少你说了算

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注