Web中间件漏洞之Tomcat篇
字数 1408 2025-08-10 22:07:53
Tomcat中间件漏洞分析与防护指南
1. Tomcat简介
Tomcat是一个开源的轻量级Web应用服务器,广泛应用于中小型系统和并发访问量不大的场景,是开发和调试JSP程序的首选工具。作为Apache服务器的扩展,Tomcat运行时是独立进程。
2. 远程代码执行漏洞(PUT方法)
漏洞描述
当Tomcat运行在Windows主机上且启用了HTTP PUT请求方法时,攻击者可构造特殊请求上传包含恶意代码的JSP文件,导致任意代码执行。
影响版本:Apache Tomcat 7.0.0 - 7.0.81
漏洞复现步骤
-
配置漏洞环境:
- 修改
/conf/web.xml文件,添加:<init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> - 重启Tomcat服务
- 修改
-
利用漏洞:
- 使用Burp Suite抓包,发送PUT请求创建JSP文件
- 示例JSP内容:
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%> - 成功上传后访问
/122.jsp?cmd=calc可执行系统命令
修复方案
- 检测当前版本是否受影响,禁用PUT方法
- 升级至最新版本
3. 后台弱口令war包部署漏洞
漏洞描述
Tomcat支持后台部署war文件,若存在弱口令,攻击者可上传包含webshell的war包获取服务器控制权。
漏洞复现步骤
-
配置弱口令:
- 修改
conf/tomcat-users.xml设置简单凭证
- 修改
-
利用漏洞:
- 爆破获取后台管理密码
- 上传包含JSP后门的war包
- 成功部署后可执行系统命令和文件管理操作
修复方案
- 以低权限运行Tomcat,创建专用服务用户
- 增加本地和证书认证,部署账户锁定机制
- 对manager目录设置最小权限访问限制
- 避免使用弱口令
4. 反序列化漏洞(JmxRemoteLifecycleListener)
漏洞描述
由于使用JmxRemoteLifecycleListener监听功能导致的远程代码执行漏洞,与Oracle的CVE-2016-3427相关。
影响版本:
- Tomcat 9.0.0.M1 - 9.0.0.M11
- Tomcat 8.5.0 - 8.5.6
- Tomcat 8.0.0.RC1 - 8.0.38
- Tomcat 7.0.0 - 7.0.72
- Tomcat 6.0.0 - 6.0.47
漏洞复现步骤
-
配置漏洞环境:
- 在
conf/server.xml中启用JmxRemoteLifecycleListener监听端口(10001和10002) - 下载并放置
catalina-jmx-remote.jar和groovy-2.3.9.jar到lib目录 - 修改
catalina.bat脚本添加配置
- 在
-
利用漏洞:
- 构造特定payload
- 成功利用后可执行系统命令(如弹出计算器)
修复方案
- 关闭JmxRemoteLifecycleListener功能
- 对JMX远程端口实施网络访问控制
- 增加严格认证方式
- 升级至官方修复版本
5. 综合防护建议
-
版本管理:
- 定期检查并升级至最新稳定版本
- 关注官方安全公告和CVE信息
-
配置加固:
- 禁用不必要的HTTP方法(PUT/DELETE等)
- 限制管理后台访问IP
- 启用严格的认证机制
-
运行环境:
- 使用专用低权限账户运行Tomcat
- 实施文件系统权限最小化原则
-
监控措施:
- 部署日志审计系统监控异常行为
- 定期进行安全扫描和渗透测试
通过全面了解这些漏洞原理和防护措施,可以有效提升Tomcat服务器的安全性,防范潜在攻击。