环境:

Windows7专业版32位
Office2003 XP3 完全版

POC来源:

网络样本
工具:
IDA OD 010Ediotr windbg

漏洞成因以及分析:

栈内存拷贝溢出漏洞,控件安全检查不严

查找漏洞触发点:

如果分析有错误,谢谢大家帮我指正
打开WORD 使用OD 附加WORD 打开POC
触发溢出
[漏洞样本分析]CVE-2012-0158
由于栈溢出会破坏向下的栈空间,如果足够大,那基本是找不到线索 所以我们往溢出点的栈往上看 找点线索定位溢出点
[漏洞样本分析]CVE-2012-0158
往上看发现两个返回地址 先看第一个
[漏洞样本分析]CVE-2012-0158
可能是栈溢出的函数位置 我们现在这里下断试试

然后再开,单步步过,观察堆栈返回地址是否被破坏
经过观察我们发现是这个函数执行完后堆栈被破坏
[漏洞样本分析]CVE-2012-0158
我们进函数里面观察一下 有没有可疑的内存拷贝语句
经观察 极有可能是这句拷贝语句造成的溢出
[漏洞样本分析]CVE-2012-0158
但是在汇编里不好观察,我们搜索一下最初在栈里发现那两个返回地址的名字
找到了这个模块,我们使用IDA观察一下
通过在OD里的位置 定位到了IDA里的函数
[漏洞样本分析]CVE-2012-0158
进去溢出函数里面看 发现是这句造成的溢出的函数
[漏洞样本分析]CVE-2012-0158
而对传进来的长度参数只有一句简单的判断
所以只要使这个局部变量V7 和传进来的参数相等就可以了,我们往上观察传参的地方
[漏洞样本分析]CVE-2012-0158
发现是定义的局部变量 而且要=>8 没有上限 这样更是我们shellocde的最佳利用点
我们打开010Ediotr 使用WinExec 然后使用OD动态调试 快速定位这两个局部变量的位置就是
[漏洞样本分析]CVE-2012-0158
所以我们在写shellocde时候也要往后移动八个字节

运行指令我们就是用跳板指令JMP ESP 接下来我们就要在里面搜索这个指令
我们打开windbg 附加 使用mona插件搜索模块
[漏洞样本分析]CVE-2012-0158
我们选择一个保护比较少 而且通用性高的模块 大家可以自己判断 我选择的是WININET.dll 这个模块
[漏洞样本分析]CVE-2012-0158
选一个地址作为我们的跳板
[漏洞样本分析]CVE-2012-0158
完成利用
[漏洞样本分析]CVE-2012-0158

相关文章:

  • 2021-06-16
  • 2021-05-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-02
  • 2021-10-26
  • 2022-01-10
猜你喜欢
  • 2021-11-08
  • 2021-12-21
  • 2021-11-24
  • 2021-12-06
  • 2021-06-27
  • 2021-12-15
  • 2021-04-17
相关资源
相似解决方案