Apache Tomcat 作为全球最流行的 Java Web 应用服务器之一,广泛应用于企业级系统、开发环境和云服务中。然而,其开放性和灵活性也使其成为黑客攻击的重点目标。近年来,远程代码执行(RCE)、会话劫持、信息泄露等安全漏洞频发,给系统安全带来巨大威胁。

本文将结合 2025 年最新披露的高危漏洞 CVE-2025-24813 及历史常见问题,全面梳理 Tomcat 漏洞类型与修复方法,提供可落地的安全加固方案,助您构建更安全的 Web 服务环境。
Tomcat 常见漏洞类型概览
在深入修复方案前,我们先了解 Tomcat 主要面临的安全风险:
| 漏洞类型 | 风险等级 | 攻击后果 |
|---|---|---|
| 远程代码执行(RCE) | ⚠️ 高危 | 攻击者可在服务器上执行任意命令,完全控制主机 |
| 任意文件写入/上传 | ⚠️ 高危 | 上传恶意 JSP 文件,实现后门植入 |
| 会话劫持 | 🔶 中危 | 窃取用户会话,冒充合法用户操作 |
| 信息泄露 | 🔶 中危 | 暴露版本号、路径、配置文件等敏感信息 |
| 默认页面暴露 | 🔶 中危 | 显示“Congratulations”欢迎页,暴露服务存在 |
✅ 提示: 即使某些漏洞利用条件复杂(如 CVE-2025-24813),但一旦被成功利用,后果极其严重,建议所有用户及时评估并修复。
2025年高危漏洞 CVE-2025-24813 详解与修复
📌 漏洞编号:CVE-2025-24813
漏洞等级:高危
影响版本:
Apache Tomcat 9.0.0.M1 至 9.0.98
Apache Tomcat 10.1.0-M1 至 10.1.34
Apache Tomcat 11.0.0-M1 至 11.0.2
🔍 漏洞成因:
该漏洞是一个反序列化导致的远程代码执行漏洞,需同时满足以下四个条件才可被利用:
启用了
DefaultServlet的写入功能(默认关闭);支持 partial PUT 请求(默认开启);
使用了文件会话持久化且存储路径为默认位置;
应用类路径中包含存在反序列化漏洞的库(如 commons-collections)。
尽管利用条件苛刻,但由于涉及 RCE,仍被评定为高危漏洞。
✅ 官方修复建议:
立即升级至安全版本
📎 官方补丁下载地址:
Tomcat 9.x 用户 → 升级至 9.0.99 或更高
Tomcat 10.1.x 用户 → 升级至 10.1.35 或更高
Tomcat 11.x 用户 → 升级至 11.0.3 或更高
临时缓解措施(无法立即升级时)
确保
DefaultServlet的readonly参数设置为true(默认值);禁用不必要的会话持久化功能;
移除项目中不必要的第三方反序列化风险库(如旧版 commons-collections);
使用 WAF 规则拦截可疑的 PUT 请求。
历史常见漏洞及通用修复方案
1. CVE-2017-12615:PUT 方法任意文件上传
漏洞原理:
当 web.xml 中 readonly 参数被设为 false 时,攻击者可通过 HTTP PUT 请求上传 .jsp 文件,实现远程代码执行。
修复方法:
✅ 最佳实践: 生产环境务必保持
readonly="true",禁止通过 HTTP 方法修改服务器文件。
2. 默认欢迎页面暴露(IDPA 类场景)
风险描述:
安装后未修改默认首页,访问 / 显示 “Congratulations, your Tomcat is installed correctly”,暴露服务指纹,增加被扫描和攻击的概率。
解决方案:
备份并替换默认首页:
创建跳转页面:
或直接删除 ROOT 目录内容,部署自有应用。
💡 安全原则: 遵循“最小暴露面”原则,非必要不保留默认页面。
3. 会话劫持防护
加固措施:
启用 HTTPS,使用 SSL/TLS 加密传输 Cookie;
在
context.xml中设置会话 Cookie 安全属性:设置合理的会话超时时间:
4. 信息泄露防范
常见问题:
错误页面显示堆栈信息;
暴露 Tomcat 版本号;
目录遍历漏洞。
修复建议:
自定义错误页面,避免返回详细异常:
隐藏版本信息:修改
catalina.jar中的 ServerInfo.properties 文件(不推荐频繁修改核心包),或使用 Nginx 反向代理隐藏后端信息。禁用目录浏览:
Tomcat 安全加固 Checklist(生产环境必做)
| 项目 | 是否完成 | 备注 |
|---|---|---|
| ✅ 升级到最新稳定版 Tomcat | ☐ | 推荐 9.0.99+ / 10.1.35+ |
| ✅ 关闭 DefaultServlet 写入功能 | ☐ | readonly=true |
| ✅ 删除默认 ROOT 页面 | ☐ | 替换为业务首页或重定向 |
| ✅ 配置 HTTPS 和安全 Cookie | ☐ | 使用 Let's Encrypt 免费证书 |
| ✅ 设置合理会话超时 | ☐ | 建议 15-30 分钟 |
| ✅ 禁用目录浏览 | ☐ | listings=false |
| ✅ 使用非 root 用户运行 Tomcat | ☐ | 如 tomcat:tomcat |
| ✅ 定期审计日志(catalina.out, access_log) | ☐ | 关注异常请求 |
| ✅ 配置防火墙限制访问 IP | ☐ | 如仅允许内网或特定出口 |
安全无小事,预防胜于补救
Tomcat 虽然强大,但其安全性高度依赖于正确的配置与及时的更新。面对不断涌现的新漏洞(如 2025 年的 CVE-2025-24813),我们必须建立常态化安全运维机制:
定期关注官方安全公告(Apache Tomcat Security Pages);
制定版本升级计划,避免长期停留在老旧版本;
最小化安装,仅启用必要组件;
结合 WAF、IDS 等外部防护手段,形成纵深防御体系。
🔐 一句话忠告: 不要让一个“Congratulations”页面,成为黑客入侵的第一步。
📢 订阅提醒: 关注我,获取更多中间件安全、Java 架构与 DevSecOps 实战干货!
💬 欢迎留言讨论: 你在生产环境中遇到过哪些 Tomcat 安全问题?是如何解决的?





















