Q: 漏洞问题,漏洞名称 Apache Tomcat servlet / JSP容器默认文件
Posted on 2025-09-01 10:42 三年三班王小朋 阅读(46) 评论(0) 收藏 举报漏洞描述
“Apache Tomcat servlet / JSP容器默认文件” 是一个常见的安全风险点。虽然这些默认文件(如示例应用、管理界面、测试页面)在学习和开发阶段非常有用,但在生产环境中必须删除或禁用,否则可能被攻击者利用进行信息泄露、漏洞探测甚至远程代码执行。
解决方案:
一、Tomcat 默认安装后常见的“危险”默认文件和目录
| 目录/文件 | 说明 | 风险等级 |
|---|---|---|
/examples |
JSP 和 Servlet 示例代码(含源码) | ⚠️ 高 |
/manager |
应用部署管理界面(可上传 WAR 包) | ⚠️ 高 |
/host-manager |
虚拟主机管理界面 | ⚠️ 高 |
/docs |
Tomcat 官方文档 | ❗ 中(信息泄露) |
/ROOT |
默认首页(index.jsp) |
✅ 可保留但建议自定义 |
web.xml 中的默认配置 |
启用了某些调试功能 | ⚠️ 需检查 |
二、临时解决方案:删除默认文件和示例应用(详细步骤)
步骤 1:定位 Tomcat 安装目录
假设你的 Tomcat 安装路径为:
/usr/local/tomcat # Linux C:\apache-tomcat-9.0.98\ # Windows
进入 `webapps` 目录:
cd /usr/local/tomcat/webapps
步骤 2:备份(可选但推荐)
tar -czf tomcat-webapps-backup.tar.gz examples manager host-manager docs
步骤 3:删除默认示例和管理应用
方法一:直接删除目录(推荐用于生产环境)
rm -rf examples/ # 删除所有 JSP/Servlet 示例 rm -rf manager/ # 删除应用管理器 rm -rf host-manager/ # 删除主机管理器 rm -rf docs/ # 删除文档(可选)
注意:
如果你**需要使用 `manager` 功能**(如热部署),不要删除,但必须**加强安全配置**(见后文)。
`ROOT` 目录可以保留,但建议替换为自定义首页。
步骤 4:验证是否删除成功
重启 Tomcat:
/bin/shutdown.sh
/bin/startup.sh
访问以下 URL,确认返回 **404 Not Found**:
- `http://your-server:8080/examples` → 应无法访问
- `http://your-server:8080/manager` → 应无法访问
- `http://your-server:8080/host-manager` → 应无法访问
- `http://your-server:8080/docs` → 应无法访问
步骤 5:额外安全加固(建议同步执行)
1. 删除 `webapps` 下的默认 `jsp` 和 `servlet` 示例残留
检查是否有以下文件:
find /usr/local/tomcat/webapps -name "*.jsp" -o -name "*.java"
删除不必要的测试文件。
2. 检查并清理 `conf/web.xml`
确保没有启用不必要的功能,例如:
<servlet> <servlet-name>invoker</servlet-name> <servlet-class>org.apache.catalina.servlets.InvokerServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet>
`InvokerServlet` 允许动态调用任意 Servlet,**极易被利用**,建议注释或删除。
3. 清理 `work` 和 `temp` 目录(可选)
rm -rf /usr/local/tomcat/work/Catalina/* rm -rf /usr/local/tomcat/temp/*
这些是运行时生成的临时文件,删除后重启会重建。
三、如果你必须保留 `manager` 或 `host-manager`
请务必执行以下安全措施:
1. 修改 `conf/tomcat-users.xml`,设置强密码
<tomcat-users> <role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="admin" password="StrongP@ssw0rd!2025" roles="manager-gui,admin-gui"/> </tomcat-users>
2. 限制访问 IP(推荐)
编辑 `webapps/manager/META-INF/context.xml`:
<Context> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1|192\.168\.1\.\d+|你的运维IP" /> </Context>
这样只有指定 IP 可以访问管理界面。
四、总结:临时解决方案清单
| 操作 | 是否必须 |
|---|---|
✅ 删除 /examples 目录 |
是(高风险) |
✅ 删除 /manager(如非必要) |
是或加强认证 |
✅ 删除 /host-manager(如非必要) |
是 |
✅ 删除 /docs(可选) |
推荐 |
✅ 替换 /ROOT 首页 |
推荐 |
✅ 注释 InvokerServlet |
是 |
| ✅ 重启 Tomcat | 是 |
后续建议(长期方案)
1. **使用最小化部署**:只部署你的应用 WAR 包,不要保留 `webapps` 下其他内容。
2. **前置反向代理**(Nginx/Apache):隐藏 Tomcat 版本和路径。
3. **定期更新 Tomcat 版本**:避免已知漏洞。
4. **启用访问日志审计**:监控异常请求。
浙公网安备 33010602011771号