Apache Tomcat 常见漏洞分析与防护指南
1. 产品概述
Apache Tomcat 是由 Apache 软件基金会开发的开源轻量级 Java Web 应用服务器,作为 Servlet、JSP 和 EL 等规范的官方参考实现,广泛应用于 Java Web 应用部署环境。
官网地址:https://tomcat.apache.org/
2. 资产识别与测绘
2.1 网络测绘语法
FOFA:
icon_hash="-297069493"
title="Apache Tomcat"
app="APACHE-Tomcat"
body="Tomcat Connectors"
Hunter:
app.name=="Apache Tomcat"
web.title="Apache Tomcat"
web.icon=="4644f2d45601037b8423d45e13194c93"
web.body="Tomcat Connectors"
3. 目录结构分析
webapp/ # 工程发布文件夹
├── META-INF/ # 工程元信息目录
│ └── MANIFEST.MF # 包含应用版本、依赖等元数据
├── WEB-INF/ # Web应用安全目录(客户端不可访问)
│ ├── web.xml # Web应用部署配置文件
│ ├── classes/ # 应用程序类文件目录
│ └── lib/ # 第三方库文件目录
└── <userdir>/ # 开发者创建的静态资源目录
4. 常见漏洞详解
4.1 Tomcat示例目录泄露
风险描述:默认源码包包含 servlets-examples 和 tomcat-docs 目录,其中样例存在安全风险。
影响:攻击者可操纵 session 绕过验证机制直接登录后台。
检测方法:访问 /examples/servlets/servlet/SessionExample 等样例路径。
4.2 Tomcat弱口令漏洞
漏洞原理:Manager 页面采用 Basic 认证,易受暴力破解攻击。
常见弱口令组合:
- tomcat/tomcat
- admin/admin
- admin/空口令
- root/root
爆破方法:
- 使用 Burp Suite 抓取登录请求
- 对 Authorization 头进行 Base64 解码(格式:username:password)
- 采用迭代攻击模式进行爆破
4.3 Tomcat后台GetShell漏洞
漏洞原理:通过 Manager 后台的 WAR 包热部署功能实现代码执行。
利用步骤:
- 生成 JSP WebShell(如使用哥斯拉)
- 将 JSP 文件打包为 WAR 格式
- 通过 Manager App 上传部署
- 访问 WebShell 路径获取控制权
检测工具:
- fscan
- Tomcatscan
修复方案:
- 设置强密码:修改
conf/tomcat-users.xml - 删除 manager 目录
- 限制管理界面访问IP
4.4 AJP任意文件读取/包含漏洞(CVE-2020-1938)
影响版本:
- Apache Tomcat 6
- Tomcat 7 < 7.0.100
- Tomcat 8 < 8.5.51
- Tomcat 9 < 9.0.31
漏洞原理:AJP协议缺陷导致可读取Web应用目录任意文件。
复现步骤:
- 使用检测脚本:
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py - 读取敏感文件:
/WEB-INF/web.xml - 配合文件上传实现RCE
修复方案:
- 升级到安全版本
- 注释
server.xml中的 AJP Connector - 配置 AJP 认证参数
4.5 任意文件写入漏洞(CVE-2017-12615)
影响版本:Tomcat 7.0.0-7.0.81
漏洞条件:conf/web.xml 中 readonly 参数设置为 false。
绕过方法:
- 使用斜杠:
shell.jsp/ - 空格编码:
shell.jsp%20 - Windows NTFS流:
shell.jsp::$DATA
修复方案:设置 readonly 为 true。
4.6 拒绝服务漏洞(CVE-2020-13935)
影响版本:
- 9.0.0.M1~9.0.36
- 10.0.0-M1~10.0.0-M6
- 8.5.0~8.5.56
- 7.0.27~7.0.104
漏洞原理:WebSocket 协议处理缺陷导致无限循环消耗CPU资源。
检测方法:访问 /examples/websocket/echo.xhtml
4.7 路径遍历漏洞(CVE-2025-55752)
影响版本:
- Tomcat 11.x:11.0.0-M1 ≤ 版本 < 11.0.11
- Tomcat 10.x:10.1.0-M1 ≤ 版本 < 10.0.45
- Tomcat 9.x:9.0.0-M1 ≤ 版本 < 9.0.109
利用条件:
- 启用 RewriteValve 组件
- 重写规则存在逻辑缺陷
- 启用文件修改类HTTP方法
检测命令:
curl -i "http://target:8080/download?path=%2FWEB-INF%2Fweb.xml"
4.8 远程代码执行漏洞(CVE-2019-0232)
影响版本:
- Tomcat 9.0.0.M1 to 9.0.17
- Tomcat 8.5.0 to 8.5.39
- Tomcat 7.0.0 to 7.0.93
必要条件:Windows平台 + 启用CGI Servlet。
4.9 反序列化漏洞(CVE-2016-8735)
影响版本:Tomcat 6.0.0-6.0.47 至 9.0.0.M1-9.0.0.M11
必要条件:启用 JmxRemoteLifecycleListener 服务。
5. 安全加固建议
5.1 配置安全
- 修改默认端口(8080,8009)
- 删除示例文档和manager应用
- 设置强密码策略
- 限制管理界面访问权限
5.2 服务加固
- 关闭不必要的AJP服务
- 设置
readonly=true - 定期更新到最新安全版本
- 最小化服务组件启用
5.3 监控防护
- 部署WAF防护设备
- 启用安全审计日志
- 建立漏洞扫描机制
- 实施网络访问控制
6. 检测工具推荐
6.1 综合扫描
- afrog:
afrog.exe -s tomcat -pl - fscan:端口和服务识别
- Tomcatscan:专用漏洞检测
6.2 专项检测
- AJP漏洞检测脚本
- WebSocket测试工具
- 路径遍历检测工具
7. 总结
Tomcat 作为广泛使用的Java应用服务器,其安全性直接关系到业务系统的稳定运行。通过系统化的漏洞认知、及时的补丁管理和严格的安全配置,可有效降低安全风险。安全运维人员应建立常态化的安全检测机制,确保Tomcat服务持续安全稳定运行。
注:本文仅用于安全研究和技术学习,在实际环境中进行安全测试时,请确保获得相关授权并遵守法律法规。