管理应用为什么危险
Tomcat 自带的 manager 与 host-manager 允许通过 Web 界面部署 WAR 包、查看并停止应用,examples 与 docs 则是随发行版附带的样例与文档应用。管理应用配合弱口令或公网暴露,等于给出一个现成的部署入口:上传一个 WAR 就能获得代码执行。生产环境建议移除样例与管理应用;确需保留时,加强认证并限制来源地址。
基本信息
| 组件 | Apache Tomcat,涉及 manager、host-manager、examples、docs 应用 |
|---|---|
| 默认端口 | 8080,以实际部署配置为准 |
| 主要风险 | 默认或弱口令、管理界面公网暴露、样例应用未清理 |
| 直接后果 | 通过部署 WAR 获得服务器上的代码执行 |
| 加固要点 | 移除样例应用、强口令、IP 白名单、管理端口不对公网开放 |
| 检查方式 | 访问 /manager/html、/examples/ 等路径确认返回码 |
路径与处理
| 路径 | 说明 | 处理建议 |
|---|---|---|
| /manager/html | Web 管理界面,可部署 WAR | 生产移除,或加 IP 白名单 |
| /host-manager/html | 虚拟主机管理界面 | 与 manager 同等对待 |
| /manager/status | 运行状态与线程信息 | 按管理应用统一处理 |
| /examples/ | 随发行版附带的样例应用 | 生产环境直接删除 |
| /docs/ | 随发行版附带的文档 | 生产环境直接删除 |
| /manager/text | 供脚本调用的管理接口 | 关闭或严格限制来源 |
加固要点
加固要点
1. 生产环境删除 webapps 下的 docs、examples、manager、host-manager
2. 必须保留管理应用时:强口令 + IP 白名单(RemoteAddrValve)
3. 管理端口不对公网开放,或仅内网管理网段可访问
4. 升级到受支持的 Tomcat 版本,关注安全公告
5. tomcat-users.xml 只保留必要角色(manager-gui 等),并定期轮换口令IP 白名单配置示例(context.xml)
IP 白名单配置示例(context.xml)
<Context>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="10\.0\.0\.\d+|127\.0\.0\.1" />
</Context>
<!-- 放在管理应用的 META-INF/context.xml 中,对该应用生效 -->
<!-- 正则要写全,避免宽匹配把整段网络放行 -->典型使用场景
- 应用服务器上线前的样例应用清理
- 巡检时批量确认管理路径的返回码
- 渗透测试报告里管理界面暴露问题的整改
- 接管老系统时的暴露面摸底
- 版本升级后复核配置是否被新包覆盖
- 审计举证:说明谁持有管理角色与权限
tomcat-users.xml 中管理角色(manager-gui 等)只授予必要账号并定期轮换口令。能通过配置管理统一下发就不要手改服务器上的文件,避免下次发布被覆盖。
只要能登录管理界面并部署 WAR,就等价于在该服务器上执行代码。管理界面的防护等级应当按运维通道对待,而不是按普通业务页面。