软件名称:Microsoft Office
软件版本:2003
漏洞模块:MSCOMCTL.OCX
POC来源:Kail(Linux)Metasploit框架
操作系统:Windows 7\sp1\x86 32位
漏洞编号:CVE
0x01 漏洞原理
关于本漏洞原理,网上有各种分析文章,一般都基于实例样本来定位漏洞的二进制代码并分析原理,这里不作详细的分析过程,直接给出漏洞成因,后面也有少部分的调试演示。这个漏洞发生在office的一个组件MSCOMCTL.OCX,多个版本office的该模块都存在这个漏洞,本文的测试环境均以WINDOWS+office2003为例。MSCOMCTL.OCX这个漏洞模块是office解析activeX控件用到的一个动态库,如果一个office文档中包含activeX这类控件元素的话,比如按钮、列表、树形控件等,当文档通过office打开时MSCOMCTL.OCX就会被自动载入office程序的进程空间被调用来解析和显示控件。
本漏洞属于经典缓冲区溢出漏洞里的栈内存拷贝溢出漏洞,当office解析到一个被构造好的控件(以ListView列表控件为例),会发生栈内存越界拷贝。以下栈回溯示意图可以代表本漏洞的发生过程:
0x02 漏洞成因
栈内存拷贝溢出漏洞,控件安全检查不严
综上可以得出漏洞成因是在读取数据的时候,读取的长度和验证的长度都在文件中,且可以人为修改,进而出发缓冲区溢出