0%

CVE-2011-0104 Microsoft Excel TOOLBARDEF Record栈溢出漏洞

漏洞描述:office处理XLB的文档时,TOOLBARDEF Record属性存在栈溢出。

1、已经拿到exploit.xlb样本文件,windbg打开excel,并加载exploit.xlb,程序中断。
在该指令下断点,查看栈被覆盖前的情况,可以发现栈空间已经被恶意数据覆盖,这次使用污点追踪的方法分析。
3-1

2、通过IDA打开找到300ce361所在函数为300ce252。由于程序执行到300ce361时,栈空间会被恶意数据覆盖,因此在程序执行到300ce252时,通过ollydbg在栈顶下内存写入断点。
3-2

3、F9执行后会遇到部分PUSH指定,这里我们只关注栈空间被大量数据覆盖的指令,因此可以无视PUSH,程序执行到300ce3c8时断下,并查看此时的edi指向栈空间,esi指向大量畸形数据,ecx为AB。
3-3

4、可以猜测可能是这次rep movs指令导致了栈溢出,因此可以关注rep movs指令控制复制数据大小的ecx是否正常。用IDA定位到300ce3c8所在函数,查看ecx来源。

3-4

5、根据alt+k看到的栈调用情况,可以看出流程

3-5

call 300ce252(arg1,arg2,…,arg11)
call 306deefe()
call 300ce380(0013d8c7,300,ffffefe1)
找到了漏洞触发点后,去调查到底是excel在处理那些数据时导致了溢出漏洞。

6、可以利用现成的office格式分析工具py-office-tools(https://github.com/ohio813/py-office-tools)来解析poc文件。

7、并与exploit.py中的敏感字段比较,如下图所示:
3-6

8、得出结论excel在处理xlb文档时,当recordtype =toolbardef(0Xa7),fUnnamed=(0Xb0), cbtn=(0Xcf)时,没有对continue数据段的长度(300)进行检查。(详细的处理流程需要通过IDA与OD动静结合来进行分析)