Apache Tomcat RewriteValve路径遍历漏洞(CVE-2025-55752)修复

文章目录

一、漏洞发现

二、漏洞描述

近日,奇安信CERT监测到官方修复Apache Tomcat RewriteValve 路径遍历漏洞(CVE-2025-55752),该漏洞产生于在 Apache Tomcat 的 RewriteValve 组件中,由于 URL 规范化与解码操作的执行顺序存在缺陷,导致攻击者能够突破安全路径限制,直接访问受保护的 /WEB-INF/ 或 /META-INF/ 敏感目录。如果同时启用了 PUT 请求或 WebDAV 功能,则攻击者可以上传恶意 JSP 文件并通过路径遍历执行,从而造成远程代码执行。目前该漏洞PoC和技术细节已在互联网上公开,鉴于该漏洞影响范围较大,建议客户尽快做好自查及防护。

利用条件

1、开启 RewriteValve 重写配置:org.apache.catalina.valves.rewrite.RewriteValve;

2、能否利用要看具体的 RewriteValve 重写规则;

3、启用 PUT 功能或 WebDav 才有可能实现远程代码执行。

02 影响范围

影响版本

bash 复制代码
11.0.0-M1 <= Apache Tomcat < 11.0.11
10.1.0-M1 <= Apache Tomcat < 10.0.45
9.0.0-M1 <= Apache Tomcat < 9.0.109

三、解决措施

目前大部分的JAVA应用都是采用的SpringBoot的进行开发,Spring Boot 使用的是 内嵌式 Tomcat (Embedded Tomcat),Tomcat 作为一个 JAR 包依赖库,直接打包在你的 your-app.jar 文件内部。

  1. 确认tomcat版本号
  2. 修改pom.xml文件中 版本或 <spring-boot.version> 属性。
xml 复制代码
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <!-- 升级到最新的安全版本,例如 2.7.18+ 或 3.2.11+ (具体需查Spring Boot发布说明) -->
    <!-- 建议去 spring.io 查看哪个版本包含了 Tomcat 9.0.109+ -->
    <version>3.2.12</version> 
    <relativePath/> 
</parent>

如果不想升级整个 Spring Boot 大版本,也可以强制覆盖 Tomcat 依赖版本:

xml 复制代码
<properties>
    <tomcat.version>9.0.109</tomcat.version> <!-- 强制指定安全版本 -->
</properties>

或者应用是这样以springboot依赖的形式

xml 复制代码
<!-- SpringBoot的依赖配置-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.6.14</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

如果不想将spring-boot-dependencies 整体升级,我们可以单独覆盖tomcat

xml 复制代码
<!--基于 Apache Tomcat RewriteValve路径遍历漏洞 CVE-2025-55752 -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-core</artifactId>
    <version>9.0.109</version>
</dependency>

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-el</artifactId>
    <version>9.0.109</version>
</dependency>

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-websocket</artifactId>
    <version>9.0.109</version>
</dependency>

重新打包部署应用就可以了

四、参考文档

https://www.secrss.com/articles/84465

相关推荐
杨杨杨大侠9 小时前
都能接模型、RAG 和 MCP,Java Agent 框架到底差在哪?
java
Thinker QAQ9 小时前
并发编程(九):BlockingQueue 与 Channel——语言层的原子性、可见性与有序性
java·python·go·并发编程·channel·blockingqueue·message passing
霸道流氓气质11 小时前
RAG 可观测性与生产监控实战:四层遥测模型、五大仪表盘与 OpenTelemetry 全链路追踪的 Java 生产级实现
java·人工智能·python
AOI小白新手上路11 小时前
autodl常用的tar 打包下载(数据集)命令手册:逐段拆解与套用模板
java·大数据·数据库
dishugj13 小时前
系统架构风险点、敏感点和权衡点的概念和区分
java·开发语言
苜蓿muxu13 小时前
常用代码命名规范
java
马优晨13 小时前
JAVA 中 VO 实体类是什么意思,为什么要做这个
java·开发语言·状态模式·java vo·java vo是什么
Baron X14 小时前
Eclipse Temurin 21 (JRE) Alpine 镜像获取、离线导入与推送操作
java·docker·eclipse·temurin
孙浩君14 小时前
我用 Spring Boot + xterm.js 写了个终端风格互动叙事游戏引擎:游戏即文件,上传一个 JSON 就能玩
java