Tomcat中间件漏洞复现
字数 1708 2025-08-12 11:34:09
Tomcat中间件漏洞复现与防御指南
一、Tomcat基础介绍
Tomcat是一个开源的轻量级Web应用服务器,是Apache软件基金会的项目,主要用于开发和调试JSP程序。
Tomcat目录结构
- bin:Tomcat启动与停止脚本
- conf:Tomcat配置文件
- server.xml:配置端口号、host主机、context等
- web.xml:部署描述文件
- tomcat-user.xml:用户密码和权限配置
- lib:Tomcat依赖的jar文件
- logs:日志文件,如catalina.out
- temp:临时目录
- webapps:默认站点路径
- work:缓存目录
Tomcat连接器
Tomcat默认配置两个连接器:
- HTTP协议端口(默认8080)
- AJP协议端口(默认8009),用于处理AJP协议请求
二、Tomcat常见漏洞及复现
1. 任意文件写入漏洞(CVE-2017-12615)
漏洞原理:
当Tomcat配置了readonly=false时,允许用户使用PUT和DELETE方法,导致可以向服务器写入文件。
影响版本:
- Apache Tomcat 7.0.0-7.0.81(默认配置)
- 如果配置了默认servlet,则在9.0.1(Beta)、8.5.23、8.0.47和7.0.82之前的所有版本
复现步骤:
- 检查
conf/web.xml中readonly设置为false - 使用PUT方法上传文件:
PUT /test.txt HTTP/1.1 Host: target:8080 Content-Length: 5 test - 绕过jsp文件过滤:
PUT /test.jsp/ HTTP/1.1 - 使用冰蝎等工具连接上传的webshell
修复方案:
- 将
readonly设置为true - 升级到安全版本
2. 文件包含漏洞(CVE-2020-1938)
漏洞原理:
Tomcat AJP协议设计缺陷,攻击者可以读取或包含Tomcat上所有webapp目录下的任意文件。
影响版本:
- Apache Tomcat 6.x
- 7.x < 7.0.100
- 8.x < 8.5.51
- 9.x < 9.0.31
复现步骤:
- 确认8009端口开放
- 使用漏洞利用脚本读取文件:
python CNVD-2020-10487-Tomcat-Ajp-lfi.py target -p 8009 -f WEB-INF/web.xml - 文件包含执行命令:
python CNVD-2020-10487-Tomcat-Ajp-lfi.py target -p 8009 --rce - 上传jsp木马并包含执行
修复方案:
- 禁用AJP协议,注释或删除
conf/server.xml中的:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> - 升级到安全版本
3. 弱密码漏洞
漏洞原理:
默认或弱密码导致后台管理界面被爆破。
复现步骤:
- 检查
tomcat-users.xml中的用户配置 - 尝试常见弱密码组合(如tomcat/tomcat)
- 登录后台后上传war包getshell
修复方案:
- 删除不必要的目录(docs、examples、host-manager、manager等)
- 使用强密码策略
- 限制管理界面访问IP
4. 远程代码执行漏洞(CVE-2019-0232)
漏洞原理:
Windows平台下CGI将命令行参数传递给程序时存在命令注入漏洞。
影响版本:
- 7.0.0 ~ 7.0.93
- 8.5.0 ~ 8.5.39
- 9.0.0 ~ 9.0.17
复现步骤:
- 修改
conf/context.xml添加privileged="true" - 启用CGIServlet并配置:
<init-param> <param-name>enableCmdLineArguments</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>executable</param-name> <param-value></param-value> </init-param> - 创建恶意bat文件并访问触发命令执行
修复方案:
- 关闭enableCmdLineArguments参数
- 升级到安全版本
三、防御建议
- 及时更新:保持Tomcat版本为最新安全版本
- 最小化配置:
- 禁用不必要的功能(如AJP、CGI)
- 删除示例和测试应用
- 权限控制:
- 限制管理界面访问
- 使用强密码和最小权限原则
- 安全配置:
- 设置
readonly=true - 禁用PUT和DELETE方法
- 设置
- 日志监控:定期检查访问日志和错误日志
四、工具与资源
- 漏洞检测工具:
- 漏洞利用框架:
- Metasploit
- 冰蝎(Behinder)
- 官方安全公告:
通过全面了解这些漏洞原理和防御措施,可以有效提升Tomcat服务器的安全性,防止攻击者利用这些漏洞获取系统权限。