cve-2025-24813
题目描述:

Tomcat 远程代码执行漏洞(CVE-2025-24813)

题目提示:

漏洞描述

该漏洞的核心在于 Tomcat 在处理不完整PUT请求上传时,会使用了一个基于用户提供的文件名和路径生成的临时文件。
若同时满足以下条件,攻击者可执行任意代码:

  • 默认 Servlet 启用了写权限(默认禁用)
  • 启用了部分PUT请求支持(默认启用)
  • 应用程序使用 Tomcat 的基于文件的会话持久化(默认存储位置)
  • 应用程序包含可被利用于反序列化攻击的库

漏洞原理

  1. Tomcat中文件会话持久化技术,Content-Range在Tomcat的HTTP PUT请求中主要实现用于大文件的分块传输,在文件上传未完成的情况下,会被临时储存在Tomcat的工作目录下CATALINA_BASE/work/Catalina/localhost/ROOT中
  2. 漏洞核心在于:对不完整的PUT请求上传的文件名处理机制:文件路径中的分隔符/会被转化为.。例如:对于PUT请求的路径/evil/session会被解析为.evil.session中
  3. Tomcat的File会话存储默认路径同样位于:CATALINA_BASE/work/Catalina/localhost/ROOT,在Cookie中带有JSESSIONID字段时,Tomcat会将该字段中的.id与.session拼接,并从会话存储路径中寻找文件名为.id.session的文件,对该文件的内容进行反序列化操作,从而触发攻击链

漏洞利用过程

  1. 当存在反序列化利用链时,上传包含恶意的序列化数据文件(临时存储在CATALINA_BASE/work/Catalina/localhost/ROOT)
  2. 通过设置JSESSIONID=.xxxx来触发漏洞(位置也在CATALINA_BASE/work/Catalina/localhost/ROOT)

漏洞复现

复现地址:

https://www.secsnow.cn/snowlab/696cee89-c844-4c17-bbb3-19cfbcff9d52/

以下是主要的POC,需要关注两个点,
1. PUT /111/session,111是自定义内容
2. Content-Range中bytes这个范围0-2787,需要大于或等于Content-Length,Content-Length是根据你的恶意代码自动确认的。
3. 以下两个请求,第一PUT方法请求后需要迅速请求第二个GET方法

PUT /111/session HTTP/1.1
Host: 环境地址
Content-Length: 2787
Content-Range: bytes 0-2787/4200

{{base64dec(反序列链)}}
GET / HTTP/1.1
Host: 环境地址
Cookie: JSESSIONID=.111

获取反序化恶意代码

作者

admin

解题次数

4

一血

snow

消耗金币

0

分数

100

最高奖励

0

您尚未登录,请 登录注册 后评论
    0 人参与 | 0 条评论
    暂时没有评论,欢迎来讨论!
个人空间

0

题目

0

解题

0

分数

0

金币

题目分类
分数排行