Tomcat 管理面风险
Tomcat 的 /manager 与 /host-manager 是内置的 Web 管理应用,具备部署、启停 war 应用的能力。历史版本默认账号为 tomcat/tomcat,被大量扫描器利用上传恶意 war 包,最终直接在服务器上执行代码。8080 是 Tomcat 常见的默认 HTTP 端口,管理面与业务面常常挤在同一个端口上,因此加固思路是把管理应用删除,或至少限定来源并改用强口令。
基本信息
| 适用平台 | Linux / Windows(Tomcat 8/9/10) |
|---|---|
| 管理路径 | /manager、/host-manager、/docs、/examples |
| 默认端口 | 8080(HTTP)、8009(AJP)、8005(关闭控制) |
| 风险等级 | 高 |
| 基线要求 | 管理应用删除或强口令加来源限制 |
典型使用场景
- 业务上线前清理默认应用与示例程序
- 8080 被扫描或发现 webshell 落地后的排查
- 内网评估中收敛中间件管理面
- 反向代理架构下把管理口只留给本机访问
- 排查服务器上是否存在非预期的已部署应用
核查现状
核查现状
ss -tlnp | grep ':8080 ' # 确认 8080 监听地址与所属进程
ls /opt/tomcat/webapps/ 2>/dev/null # 看部署了哪些应用
ls /usr/share/tomcat*/webapps/ 2>/dev/null
grep -R 'tomcat-users' /etc/tomcat*/tomcat-users.xml /opt/tomcat/conf/tomcat-users.xml 2>/dev/null | head -5
find / -name '*.war' -newermt '-7 days' 2>/dev/null | head # 近期是否被塞入新的 war 包收敛动作
收敛动作
# 删除不需要的默认应用(docs/examples/manager/host-manager)
rm -rf /opt/tomcat/webapps/{docs,examples,manager,host-manager}
# server.xml 的 Connector 增加 address 属性,仅本机可访问
# <Connector port="8080" address="127.0.0.1" connectionTimeout="20000" />
# 或用 RemoteAddrValve 限制管理应用的来源地址复核必查项
| 检查项 | 含义 | 处置 |
|---|---|---|
| 管理应用 | /manager 等目录是否还在 | 不需要就直接删除 |
| 默认账号 | tomcat-users.xml 中的用户与角色 | 删除默认账号并改强口令 |
| 监听地址 | Connector 是否绑 0.0.0.0 | 管理口绑定 127.0.0.1 |
| 角色权限 | manager-gui 与 manager-script | script 可脚本部署,风险更高 |
| 已部署应用 | war 包与目录的修改时间 | 非预期应用立即隔离排查 |
能登录 /manager 就等于能在服务器上部署并执行代码。把管理应用开放到网络,等于把服务器交给任何猜中口令的人。
Tomcat 8/9/10 的目录布局略有差异,核查前先确认实际安装路径,以及启动脚本中 CATALINA_BASE 指向的位置,避免看错目录。
Windows 上判断管理面是否暴露的方法与 Linux 相同:确认 Connector 绑定的地址,若为 0.0.0.0 则等于对整个网络提供服务,应改为仅本机监听或只经反向代理访问。