![小白分析office漏洞 CVE-2012-0158 小白分析office漏洞 CVE-2012-0158]()
本文为看雪论优秀文章
看雪论坛作者ID:哦哈哈哈哈
Microsoft Office是由Microsoft(微软)公司开发的一套基于 Windows 操作系统的办公软件套装。常用组件有 Word、Excel、PowerPoint等。最新版本为Microsoft 365(Office 2019)
CVE-2012-0158漏洞是一个栈溢出漏洞,该漏洞的产生来自于微软Office办公软件中MSCOMCTL.ocx中的MSCOMCTL.ListView控件检查失误。在读取数据的时候,读取的长度和验证的长度都在文件中,且可以人为修改,进而触发缓冲区溢出,攻击者可以通过精心构造的数据修改EIP指向来实现任意代码的执行。
2.1 定位漏洞触发模块
用OllyDbg附加office,打开问题文档,发现弹出错误提示框,通过esp找到溢出点
分析溢出点附近堆栈,溢出点下面的堆栈一般是刚刚调用的函数的上一层函数堆栈,溢出后可能已经破坏,溢出点上面的堆栈─般是刚刚执行的函数堆栈,可以发现有一个地址275C8AOA,可以看出这个地址是MSCOMCTL模块中的地址,由此判断刚刚执行的函数中执行了MSCOMCTL模块中的代码。
2.2 定位漏洞函数
动态调试溢出点所在的函数,可以跟踪到是CALL275C876D时出的问题。
2.3 分析漏洞成因
在文件中搜索定位长度,发现有两个长度,猜测一个是dwBytes,一个是v7。
在OllyDbg中单步调试以及修改8282为8283对比前后状态,发现两个长度确实一个是dwBytes,一个是v7。
在读取数据时,读取的长度和验证的长度都在文件中,所以可以自行构造,进而触发栈溢出,栈溢出即在拷贝时,多余的部分向栈地址增加的方向覆盖,当函数返回地址被覆盖的时候,函数返回时会读取被覆盖的数据作为即将执行代码的地址,进而产生未知的后果。
产生漏洞的根本原因是一个判断(即dwbytes>=8)。在函数sub_275c89c7中先后调用两次函数sub_275c876d,第一次调用该函数前分配了0x14字节的栈空间,第二次调用该函数前已使用0xc字节的空间(剩余0x8字节)。在函数内部会有拷贝数据这一行为,若拷贝数据量大于0x8字节就会引起栈溢出。
官方修改如下,判断v9(dwBytes)是否等于8,不为8则返回。
3.1 分析和设计漏洞shellcode的结构
用010Editor打开问题文件,分析数据内容,其中8282为自定义的缓冲区长度。
拷贝来源值原本为436F626A6400000082820000,拷贝去向首地址如上图缓冲区起始位置,用OllyDbg验证。
RETN 0x8可以分解为两条语句 pop eip 与 ESP=ESP+0x8,将41414141替换为一个指向语句jmp esp的地址,在41414141后面16(16==0x8*2)个字节处是书写shellcode的起点。这样当执行RETN 0x8之后,eip会跳到栈顶esp指向的位置执行接下来的语句,而栈顶由于加了0x8,正好指向书写的shellcode。
3.2 在运行的程序中寻找跳板指令地址
1) 寻找Jmp esp(opecode为ffe4),用到了wimdbg+mona.py+pykd.pyd
6) 将mona.py与windbglib.py放到windbg.exe同目录下
7) 运行windbg开始调试后,输入以下命令即可开始使用mona
8) 查找”jmp esp”,”push esp#ret”等指令
查找结果如下图,因为0x729a0535 显示可读可执行(PAGE_EXECUTE_READ),故选择该地址替换41414141,由于是小端存储,记得倒序替换(即35059a72)。
3.3 编写shellcode,注入shellcode
用Visual Studio2019 编写shellcode,这里最终目标只是弹窗一个HelloWorld:
将编写的程序(realease版)拖入OllyDbg,找到main函数,然后选中书写的汇编语句,按下shift+x复制这一部分opcode,粘贴到问题文件中。
1)office漏洞大多都是栈溢出,如CVE-2017-11882、CVE-2018-0802和CVE-2017-0199
2)附件中为问题文件,即文中溢出点处的值为0x41414141的文件
3)感谢Keoyo先生在评论区的建议,祝大家不忘初心,精益求精
![小白分析office漏洞 CVE-2012-0158 小白分析office漏洞 CVE-2012-0158]()
看雪ID:哦哈哈哈哈
https://bbs.pediy.com/user-home-873637.htm
*本文由看雪论坛 哦哈哈哈哈 原创,转载请注明来自看雪社区。
本文始发于微信公众号(看雪学院):小白分析office漏洞 CVE-2012-0158
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/223311.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论