吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5104|回复: 7
收起左侧

[漏洞分析] CVE-2017-11882漏洞分析

[复制链接]
肆零柒柒 发表于 2020-4-2 17:37
本帖最后由 肆零柒柒 于 2020-4-2 17:44 编辑

分析环境
  • 环境 :win7 64位、office 2003 sp3
  • 工具 :OD、IDA7.0、010Editor


漏洞描述
该漏洞的成因是EQNEDT32.EXE进程在读入包含MathType的ole数据时,在拷贝公式字体名称时没有对名称长度进行校验,从而造成栈缓冲区溢出。

漏洞成因

该漏洞出现在模块EQNEDT32.EXE中, 该模块为windows的公式编辑器。由于该模块对于输入的公式未做正确的处理,攻击者可以通过刻意构造的数据内容覆盖掉栈上的函数地址,从而劫持程序流程,执行任意命令

模块路径

C:\Program Files\Common Files\microsoft shared\EQUATION

漏洞分析获取Poc
https://github.com/Ridter/CVE-2017-11882

复现漏洞
安装 office 2003 sp3使用 office 打开 exploit.rtf 则会出现计算器
1.jpg

定位漏洞触发点

打开公式编辑器 :插入 -> 对象 -> Miscosoft 公式3.0 加载 EQNEDT32.EXE
2.jpg
使用 OD 附加 EQNEDT32.EXE 猜测使用了 winexe、CreateProcess 等API 运行了 calc.exe,对其进行API下断
打开exploit.rtf,程序在 winexe处断了下来
3.jpg
通过分析堆栈,发现堆栈被破坏,向上分析,猜测漏洞触发大概位置(堆栈的执行是重上而下,下方堆栈可能被覆盖破坏,上方的执行后的堆栈能利用率要大很多)
4.png
反汇编跟踪,在此函数开始与结尾下端,查看运行中的堆栈情况
重新执行,对堆栈进行观察,发现堆栈被覆盖,返回值被修改
5.jpg
6.jpg

通过RETN返回到调用 winexe API从而执行 calc.exe
地址0x12F350处是构造的shellcode
7.png

通过IDA静态分析EQNEDT32.EXE,在覆盖点(0x411658)位置通过伪代码发现使用了不安全版本的字符串拷贝,自此发现了漏洞产生原因。 8.png


(因为是从本地读取数据,拷贝溢出,推断可以使用Fuzz生成测试样本进行漏洞的挖掘,但此方法耗时长,生成样本数量太多)

解决方案

使用安全的字符拷贝函数 增加溢出检查点

免费评分

参与人数 4威望 +1 吾爱币 +23 热心值 +3 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
大宇宙飘小地球 + 1 我很赞同!
gh0st_ + 1 + 1 大佬NB
PGH2031005 + 1 + 1 用心讨论,共获提升!

查看全部评分

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

PGH2031005 发表于 2020-4-2 17:54
膜拜大佬,来学习一下
头像被屏蔽
皮一侠 发表于 2020-4-2 18:03
处女-大龙猫 发表于 2020-4-2 18:07
BourbonL324 发表于 2020-4-3 08:53
谢谢楼主!
Abrahams 发表于 2020-4-3 16:09
膜拜大佬。。
大宇宙飘小地球 发表于 2020-4-3 17:00
分析得很精准,给大佬跪了
tyr1995 发表于 2020-4-4 11:09

谢谢分享!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-1 06:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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