吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2333|回复: 6
收起左侧

[漏洞分析] CVE-2010-3333 microsoft RTF栈溢出漏洞分析

  [复制链接]
danqingchuhong 发表于 2021-11-15 19:54
实验环境 操作系统:Vmware Windows xp sp3Office 版本:Microsoft Office Word 2003 漏洞文件:MSO.DLL 11.0.5606.0 调试器:Windbg:6.12.0002.633 x86  漏洞描述Microsoft office xp sp3、office 2003 xp3、office 2007 sp2、office2010等多个版本在处理 RTF 文档的绘图 pFragments 属性时产生的一个栈溢出漏洞。攻击者可以构造恶意的 RTF 文件,当用 WORD 打开恶意构 造的 RTF 文件,WORD 会直接将 RTF 中的数据复制到局部空间而无需验证复制数据的大小, 导致典型的栈溢出。 样本       一、漏洞信息1. 漏洞简述(必有)
  • 漏洞名称:microsoft RTF栈溢出漏洞
  • 漏洞编号:CVE-2010-3333
  • 漏洞类型:栈溢出
  • 漏洞影响:Microsoft office xp sp3、office 2003 xp3、office 2007 sp2、office2010等多个版本在处理 RTF 文档的绘图 pFragments 属性时产生的一个栈溢出漏洞。
  • CVSS评分:
  • 利用难度:simple
  • 基础权限:不需要
二、漏洞复现 1. 环境搭建
  • 操作系统:Vmware Windows xp sp3Office 版本:Microsoft Office Word 2003 漏洞文件:MSO.DLL 11.0.5606.0 调试器:Windbg:6.12.0002.633 x86
2. 复现过程1、利用metasploit生成可触发漏洞的poc样本  2、获取样本后,在windows xp下运行windbg ,并附加运行winword.exe
1.png
3、在windbg下按g继续运行word,并用word打开样本文件msf.rtf,发现word报错,并且未响应。
2.png
(7f8.684): Access violation - code c0000005 (first chance)First chance exceptions are reported before any exception handling.This exception may be expected and handled.eax=0000c8ac ebx=05000000 ecx=0000019b edx=00000000 esi=1104c24c edi=00130000eip=30e9eb88 esp=00123d98 ebp=00123dd0 iopl=0         nv up ei pl nz na pe nccs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010206*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Program Files\Common Files\Microsoft Shared\office11\mso.dll - mso!Ordinal6426+0x64d:30e9eb88 f3a5            rep movs dword ptr es:[edi],dword ptr [esi]




错误代码 c0000005 (first chance)出现了栈溢出
错误文件是mso.dll  MSO.DLL 被视为一种 Microsoft Office 2010 component 文件。 它最常用于由 Microsoft 开发的 Microsoft Office 2010。 它使用 DLL 文件扩展名, 并被视为 Win64 DLL (动态链接库) 文件。

30e9eb88 f3a5            rep movs dword ptr es:[edi],dword ptr [esi]   循环从esi指向的内存区域复制数据到内存的栈区域,每次是一个4个字节
这就出现了问题,从esi指定的内存区复制到栈上,没有检测栈的大小,导致edi指向的内存被覆盖,最后造成访问违例,触发异常指令地址为30e9eb88。
4、寻找出现问题函数
重新打开windbg,附加winword.exe进程,并下断点
bp 30e9eb88
因各种问题出现错误问题指令地址不一定相同。然后重复上面的操作,直到windbg运行到  rep movs dword ptr es:[edi],dword ptr [esi]5、查看堆栈输入kb
3.png
发现出现7个函数,我们一一分析。
4.png
首先明确一点内存中程序是从低地址到高地址排序,而函数中是从低地址到高地址,然后从ret指令返回值到之前函数 如果最后调用的是问题函数,极有可能是倒数第二个函数调用问题函数,所以我们调试 mso!Ordinal753+0x306e函数

mso!Ordinal753+0x307e:
30f4cdcd 8365f800        and     dword ptr [ebp-8],0
30f4cdd1 ff7514          push    dword ptr [ebp+14h]
30f4cdd4 8bc6            mov     eax,esi
30f4cdd6 f7d8            neg     eax
30f4cdd8 1bc0            sbb     eax,eax
30f4cdda 8d4df8          lea     ecx,[ebp-8]
30f4cddd 23c1            and     eax,ecx
30f4cddf 50              push    eax
30f4cde0 8b4508          mov     eax,dword ptr [ebp+8]
30f4cde3 4b              dec     ebx
30f4cde4 53              push    ebx
30f4cde5 47              inc     edi
30f4cde6 57              push    edi
30f4cde7 ff750c          push    dword ptr [ebp+0Ch]
30f4cdea e86efeffff      call    mso!Ordinal753+0x2f0e (30f4cc5d)
30f4cdef 84c0            test    al,al
30f4cdf1 740c            je      mso!Ordinal753+0x30b0 (30f4cdff)




查看该函数之后,发现(30f4cc5d)该地址在在之前的问题函数上,所以单步调试mso!Ordinal753+0x2f0e函数



然后再次下断点 bp 30f4cc5d

然后单步跟踪运行

最后找到触发错误的指令。
30f4cc60 83ec14          sub     esp,14h     这里函数开辟了0x14字节大小的栈空间
30f4cc7a ff750c          push    dword ptr [ebp+0Ch]  ss:0023:00123ddc=00000000          这里开始执行错误函数,且exc寄存器中的值为0x0000c8ac,且操作为dword字节,所以除以4


用16进制打开msf.rtf,发现字段 ac c8实际被复制到寄存器exc中了,且寄存器esi中的数据皆为ac c8 的后续数据。

用txt文件打开查看数据文件,ac c8为复制内存大小,后面可以填充40个字符来覆盖栈,再用jum esp指令覆盖返回地址,最后填充shellcode。



三、缓解措施
http://www.microft.com/zh-cn/download/details.aspx?id=8121

官方补丁采用了检测rtf文件中pFragments属性值大小是否大于4字节,若大于这挑走并返回,不再复制

四、参考文献
CVE-2010-3333解析_哔哩哔哩_bilibili

cve-2010-3333 分析简笔 - m4sterx - 博客园 (cnblogs.com)

漏洞战争

免费评分

参与人数 3吾爱币 +9 热心值 +3 收起 理由
cub1c2 + 1 + 1 谢谢@Thanks!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Autom + 1 + 1 谢谢@Thanks!

查看全部评分

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

Hmily 发表于 2021-11-16 11:27
请问是原创还是转载的?
chuohaogulang 发表于 2021-11-16 11:39
suxiaosu67 发表于 2021-11-16 14:24
 楼主| danqingchuhong 发表于 2021-11-16 18:19
Hmily 发表于 2021-11-16 11:27
请问是原创还是转载的?

复现的《漏洞战争》
 楼主| danqingchuhong 发表于 2021-11-16 18:20
Hmily 发表于 2021-11-16 11:27
请问是原创还是转载的?

复现,但一步步操作是自己写的
头像被屏蔽
tl;dr 发表于 2021-11-18 02:36
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-29 09:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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