Office CVE-2017-8570远程代码执行漏洞复现
CVE-2017-8570漏洞是一个逻辑漏洞,利用方法简单,影响范围广。由于该漏洞和三年前的SandWorm(沙虫)漏洞非常类似,因此我们称之为“沙虫”二代漏洞。
编号
CVE-2017-8570
影响版本
Microsoft Office 2007 Service Pack 3
Microsoft Office 2010 Service Pack 2 (32-bit editions)
Microsoft Office 2010 Service Pack 2 (64-bit editions)
Microsoft Office 2013 RT Service Pack 1
Microsoft Office 2013 Service Pack 1 (32-bit editions)
Microsoft Office 2013 Service Pack 1 (64-bit editions)
Microsoft Office 2016 (32-bit edition)
Microsoft Office 2016 (64-bit edition)
危害
2017年7月,微软在例行的月度补丁中修复了多个Microsoft Office漏洞,其中的CVE-2017-8570漏洞为一个逻辑漏洞,利用方法简单。网上已经出现该漏洞的利用代码,影响范围较广。
该漏洞为Microsoft Office的一个远程代码执行漏洞。其成因是Microsoft PowerPoint执行时会初始化Script”Moniker对象,而在PowerPoint播放动画期间会激活该对象,从而执行sct脚本(Windows Script Component)文件。攻击者可以欺骗用户运行含有该漏洞的PPT文件,导致获取和当前登录用户相同的代码执行权限。
复现环境
受害者(靶机)
操作系统: windows 7 sp1 x86 Office版本:Office 专业增强版 2016 ip:10.0.0.116
攻击者
操作系统:Deepin 15.4.1 metasploit版本:v4.14.28-dev ip:10.0.0.103
exp
原作者的github链接挂了,暂时就放在了我的github里面: https://github.com/tezukanice/Office8570.git
生成恶意文件
生成恶意PPSX文件
这里的10.0.0.103是攻击者的ip地址
生成反弹shell 的 exe 文件
LHOST是攻击者的ip,LPORT这里设置的是监听本机的6666端口
这里注意 当攻击目标为64位的操作系统的时候,生成的exe得改为:
监听会话
监听来自 ppsx 执行反弹 shell
一开始我这边由于没有切换到root用户导致 权限被拒绝,su切换到root用户解决问题。
msf 的监听
同样,这里攻击64位操作系统的时候,得做出如下的调整:
钓鱼攻击
将生成的恶意 Invoice.ppsx 文件重命名为:2017showgirl联系方式.ppsx 复制到目标靶机 windows7系统。
然后目标一不小心点开了这个ppt文件的时候:即可在 MSF 反弹 metertprter 的 shell 出来:
后续渗透
截图
正在看b站小姐姐视频~~
键盘记录
可以看到win7的主人在搜狗浏览器中输入了如下内容:xiao jie jie chinajoy这里面的<^H> 是删除键 是 回车键
上传文件
把我们的友情提示上传到win7系统主人的 电脑桌面上
shell
shell 顾名思义就是shell了,这个命令相当于完全控制了windows的cmd命令行,可以执行任意cmd操作,当然只要权限足够大的话。
漏洞修复
及时安装微软2017年7月发布的最新补丁
经得住诱惑,不打开来历不明的office文件如果没有打补丁的话,其实还有一直比较稳妥的打开PPT的方法,就是 不用 双击 打开PPT,打开PPT直接拖动打开 是不会触发运行exe程序的:如下图:
结束语
关于这个漏洞复现,youtube上面已经有一些复现案例了,大家可以去参考学习一下。这篇文章我直接参考的是 backlion 的文章,原标题是:Office CVE-2017-8570 远程代码执行漏洞复现,然后在此基础上做了些补充,更加小白化一些,希望可以让小白们轻松地入门metasploit。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring注解@Autowired源码分析
- 使用RecyclerView实现水平列表
- android实现记住用户名和密码以及自动登录
- Android碎片fragment实现静态加载的实例代码
- android异步消息机制 源码层面彻底解析(1)
- /undefinedcss/modules/layer/default/layer.css?v=3.1.1找不到的问题
- Android实现渐变启动页和带有指示器的引导页
- the input device is not a TTY. If you are using mintty, try prefixing the comma
- 【STM32F407】第13章 RL-TCPnet V7.X之创建多个TCP客户端
- RecyclerView实现列表倒计时
- wsl设置默认账户为root(ubuntu18.04)
- LeetCode No.14 最长公共前缀
- android异步消息机制 从源码层面解析(2)
- beego解决跨域问题:options请求、axios post请求跨域问题
- Android ListView列表实现倒计时