zoukankan      html  css  js  c++  java
  • CVE-2010-3333:Microsoft RTF 栈溢出漏洞调试分析

    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安全:软件漏洞分析技术 + 漏洞战争
  • 相关阅读:
    Codeforces 1105D Kilani and the Game【BFS】
    Codeforces 1096D Easy Problem 【DP】
    Codeforces 920F
    Codeforces 1076D Edge Deletion 【最短路+贪心】
    POJ 3090 Visible Lattice Points 【欧拉函数】
    POJ 1284 Primitive Roots (欧拉函数+原根)
    HDU 2841-Visible Trees 【容斥】
    HDU 1796 How many integers can you find 【容斥】
    HDU 4135 Co-prime (容斥+分解质因子)
    CodeForces 161D Distance in Tree【树形DP】
  • 原文地址:https://www.cnblogs.com/csnd/p/11800540.html
Copyright © 2011-2022 走看看