漏洞描述
该漏洞发生在office 2003 sp3 mscomctl.ocx模块中,在拷贝一段内存数据,由于拷贝条件逻辑错误,造成的栈缓冲区溢出。
分析环境
win7专业版
软件:office 2003
分析工具:od,ida
漏洞分析过程:
1.获取poc:
网络,论坛, Metasploit
https://www.exploit-db.com/
https://www.securityfocus.com/
2.搭建漏洞环境:
安装office 2003 sp3 ,执行poc(在执行的时,需要关闭OD的异常忽略)
3.漏洞复现:
执行poc效果:office 2003崩溃,函数返回地址被覆盖
漏洞触发具体分析
调试漏洞,定位漏洞触发点,分析漏洞成因
1.定位漏洞触发模块,通过日志,可以发现触发异常的模块为mscomctl.ocx。
1.2通过观察函数栈帧布局,栈回溯定位触发漏洞的函数
2.定位触发漏洞的函数
2.2使用IDA静态分析触发漏洞的函数
通过od模块窗口找到触发漏洞的模块的路径,使用IDA,通过g指令找到触发漏洞的函数进行分析
3.漏洞成因分析
使用OD,动态调试可以看出,造成该漏洞的原因是由于程序员粗心,将一个简单的判断的条件写反了。
漏洞利用
确定好溢出地址,就可以构建自己想要的Shellcode:
注意:1.函数返回会平衡堆栈,Shellcdoe因该在平衡堆栈地址之后,jmp esp
2.绕过DEP可以采用在程序中搜索跳板指令。