0x01 前言

  • CVE-2010-3333 漏洞是一个栈溢出漏洞,该漏洞是由于 Microsoft文档在处理 RTF 数据的对数据解析处理错误,在进行内存操作时没有对操作的数据进行长度限制,导致存在内存漏洞,根据漏洞可以很容易构造出恶意的 RTF 文档,危害较大
  • 环境

    windows XP sp3(未启用 ASLR 和 DEP)
  • 漏洞软件

    Microsoft Office 2003(提取码:woi9)
  • 分析工具

    Windbg(Windbg32Windbg64
  • metasploit 构造的样本

    能触发漏洞产生异常的 Poc,由 metasploit 构造(提取码:px76)
  • 目的

    通过栈回溯的方式找到漏洞溢出点,分析漏洞成因和利用条件

0x02 通过 metasploit 来构造样本

  • Kali 王牌工具 metasploit,渗透测试必备。查一下这个漏洞的利用信息

  • Microsoft Office 2002、2003、2007的版本都有中枪,前提是没有打过补丁

  • 生成一下 Poc,这里并不是攻击样本,只是验证漏洞的;本来想演示攻击的,但是靶机网卡出问题了

  • 以下就是 Poc 的样本,用 word 打开它就应该会触发异常

0x03 定位异常点

  • 使用 Windbg 载入

  • 附加进程



  • 运行之后,载入样本文档



  • Windbg 定位在了异常处

0x04 函数调用分析

  • 在异常处断点,重新运行一遍



  • 查看堆栈

  • 在 mso!Ordina12118+0x272f 中调用了异常函数

  • 下 0x30f0da9a 的断点,重新运行

  • 单步跟踪



  • 这个函数的地址和异常点非常接近,按 t 进入该函数

  • 继续单步跟踪

  • 来到异常触发点,可以看出异常触发点由函数 mso!Ordinal2118+0x272f 调用,此时 edi 的地址距离栈顶有 0x10 个字节,再加上 ebp 就是差 0x14 个字节溢出到返回地址

0x05 样本分析

  • 在异常处查看 esi 和 edi 的地址,其中 esi 中是样本中构造的数据,0x12a2b0 中是将要被复制的地址

  • 顺便看一下内存页的状况和内存页的权限,可以看出都是可以读写的,好像是说明内存页没有受到 DEP 的保护耶

  • 单步执行

  • 可以发现正在一步一步的复制,直到复制到字符串为 6Aa7 时才完全覆盖返回地址,也就是 0x14 到 0x18,记下此时的 16 进制数据为 36 41 61 37

  • 看一下样本的数据,从 acc8 往后复制的数据和样本当中是一模一样的

  • 最后重新运行一下,不下任何断点,直到异常处查看堆栈信息,发现此时的堆栈已经被样本数据完全的溢出覆盖了,函数的返回地址为 0x37614136,刚好为刚才 0x14 到 0x18 的值

0x06 利用

  • ASLR 没有,内存页也是可读写的(可能根据操作系统分情况讨论),SafeSEH 没有,什么防护也没有

  • 既然没有防护,那么很简单利用 jmp esp 这类的固定地址直接跳到 shellcode 即可

0x07 总结

  • 栈溯源还是比较简单的,但是寻找漏洞难度很高,需要根据不同的情况来分析,Windbg 确实没有 OD 来的顺手,但分析 Windows 程序时还是有它的优势的
  • 参考资料:0day安全:软件漏洞分析技术 + 漏洞战争

CVE-2010-3333:Microsoft RTF 栈溢出漏洞调试分析的更多相关文章

  1. CVE-2012-0158:Microsoft Office MSCOMCTL.ocx 栈溢出漏洞调试分析

    0x01 Lotus Blossom 行动 在 2015 年 6 月,国外安全厂商 Palo Alto Networks 的威胁情报团队 Unit42 发现了一起针对东南亚政府的一次间谍行为,试图获取 ...

  2. CVE-2011-0104:Microsoft Office Excel 中的栈溢出漏洞调试分析

    0x01 前言 CVE-2011-0104 是 Microsoft Office 中的 Excel(没有打补丁的情况下)表格程序在处理 TOOLBARDEF 中的 Record 字节时没有对 Len ...

  3. CVE-2018-0798:Microsoft office 公式编辑器 Matrix record 字段栈溢出漏洞调试分析

    \x01 前言 2018 年 1 月 9 日,Office 公式编辑器再曝出新漏洞,编号为 CVE-2018-0798.提起公式编辑器大家都不陌生,之前的 CVE-2017-11882 和 CVE-2 ...

  4. CVE-2017-11882:Microsoft office 公式编辑器 font name 字段栈溢出通杀漏洞调试分析

    \x01 漏洞简介 在 2017 年 11 月微软的例行系统补丁发布中,修复了一个 Office 远程代码执行漏洞(缓冲区溢出),编号为 CVE-2017-11882,又称为 "噩梦公式&q ...

  5. CVE-2010-3333-office RTF栈溢出漏洞分析

    0x00 前言 此漏洞是根据泉哥的<漏洞战争>来学习分析的,网上已有大量分析文章在此只是做一个独立的分析记录. 0x01 复现环境 操作系统-->windows7 x64 软件版本- ...

  6. CVE-2018-0802:Microsoft office 公式编辑器 font name 字段二次溢出漏洞调试分析

    \x01 前言 CVE-2018-0802 是继 CVE-2017-11882 发现的又一个关于 font name 字段的溢出漏洞,又称之为 "第二代噩梦公式",巧合的是两个漏洞 ...

  7. CVE-2011-0104:Microsoft Office Excel 栈溢出漏洞修复分析

    0x01 前言 上一篇讲到了 CVE-2011-0104 漏洞的成因和分析的方法,并没有对修复后的程序做分析.之后在一次偶然的情况下,想看一看是怎么修复的,结果却发现了一些问题 环境:修复后的 EXC ...

  8. CVE-2012-0003:Microsoft Windows Media Player winmm.dll MIDI 文件堆溢出漏洞调试分析

    0x01 蜘蛛漏洞攻击包 前言:2012 年 2月,地下黑产中流行着一款国产名为蜘蛛漏洞的攻击包 -- "Zhi-Zhu Exploit Pack",该工具包含 5 个漏洞,都是在 ...

  9. CVE-2010-2553:Microsoft Cinepak Codec CVDecompress 函数堆溢出漏洞调试分析

    0x01 前言 微软提供一个叫 Cinepak 的视频解码器,通过调用 iccvid.dll 这个动态链接库文件可以使用这个解码器:微软自带的 Windows Media Player(视频音频软件) ...

随机推荐

  1. 为什么要从 Linux 迁移到 BSD1

    为什么要从 Linux 迁移到 BSD1 作为一个操作系统,GNU/Linux 已经变得一团糟了,因为项目的分散性,内核的臃肿,以及商业利益的玩弄.从 GNU/Linux 迁移到 BSD 有几个技术上 ...

  2. 如何在 C# 中使用 ArrayPool 和 MemoryPool

    对资源的可复用是提升应用程序性能的一个非常重要的手段,比如本篇要分享的 ArrayPool 和 MemoryPool,它们就有效的减少了内存使用和对GC的压力,从而提升应用程序性能. 什么是 Arra ...

  3. Mysql将查询结果某个字段以逗号分隔,使用group_concat函数可以实现(配合group by使用)

    示例:SELECT Id, GROUP_CONCAT(Name SEPARATOR ',') Names FROM some_table GROUP BY id

  4. 阿里二面:什么是mmap?

    平时在面试中你肯定会经常碰见的问题就是:RocketMQ为什么快?Kafka为什么快?什么是mmap? 这一类的问题都逃不过的一个点就是零拷贝,虽然还有一些其他的原因,但是今天我们的话题主要就是零拷贝 ...

  5. 攻防世界 reverse 进阶 10 Reverse Box

    攻防世界中此题信息未给全,题目来源为[TWCTF-2016:Reverse] Reverse Box 网上有很多wp是使用gdb脚本,这里找到一个本地还原关键算法,然后再爆破的 https://www ...

  6. 一种3位sar adc仿真验证

    3位sar adc采用下图的电容阵列,电路如下图:所有电容的正端(也称为上极板)与比较器的同相端连接,比较器反相端接gnd,其工作过程进行大致分析见之前的文章<一种3位sar adc工作过程推导 ...

  7. Webpack 5 配置手册(从0开始)

    针对新手入门搭建项目,Webpack5 配置手册(从0开始) webpack安装顺序 1. `npm init -y`,初始化包管理文件 package.json 2. 新建src源代码目录 3. 新 ...

  8. 创建数据库 UTF-8

    CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

  9. 使用 Velero 跨云平台迁移集群资源到 TKE

    概述 Velero 是一个非常强大的开源工具,可以安全地备份和还原,执行灾难恢复以及迁移Kubernetes群集资源和持久卷,可以在 TKE 平台上使用 Velero 备份.还原和迁移集群资源,关于如 ...

  10. vue 快速入门 系列

    vue 快速入门(未完结,持续更新中...) 前言 为什么要学习 vue 现在主流的框架 vue.angular 和 react 都是声明式操作 DOM 的框架.所谓声明式,就是我们只需要描述状态与 ...