首页/安全/漏洞与攻击面速查/Druid 监控页与 SQL 面板暴露
主机与服务风险面53 条

Druid 监控页与 SQL 面板暴露

Java 应用集成数据库连接池 Druid 后,默认会开启监控页(/druid/index.html 等),未加保护时页面会展示 SQL 语句、会话参数等运行时信息;Apache Druid 控制台 8888 默认也不带认证。

漏洞与攻击面速查安全更新于 2026-10-13

两个同名不同源的 Druid

Java 应用集成数据库连接池 Druid 后,默认会开启监控页(常见路径 /druid/index.html),未加保护时页面会展示 SQL 语句、会话参数、URI 统计等运行时信息,泄露的表名与字段足以支撑下一步攻击;Apache Druid 分析数据库的控制台(默认端口 8888)默认也不带认证。两者名字都含 Druid,但要先分清是连接池还是分析数据库。

基本信息

组件一阿里 Druid 连接池的 stat-view-servlet
组件二Apache Druid 分析数据库控制台(8888)
默认状态监控页默认开启,控制台默认不带认证
处置方式加登录与来源限制,或生产环境直接关闭
识别方式请求 /druid/index.html 观察响应码与页面内容

典型使用场景

  • 上线核查:请求 /druid/index.html 确认监控页是否对外可达
  • 来源收敛:即使加了登录,也把 allow 列表从整段内网收窄到监控网段
  • 生产决策:非必要则关闭 stat-view-servlet,从根上消除该暴露面
  • 组件辨认:页面提示与响应头能区分连接池监控页与分析数据库控制台
  • 例行巡检:纳入 Web 暴露面扫描的固定检查路径

暴露验证

暴露验证
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/druid/index.html
# 200 表示监控页可直接访问,应加保护或关闭
curl -s http://127.0.0.1:8080/druid/sql.html | head -c 200   # SQL 监控页
curl -sI http://127.0.0.1:8888/ | head -n 5                   # Apache Druid 控制台

收敛配置示例

收敛配置示例
druid.stat-view-servlet.enabled=true
druid.stat-view-servlet.login-username=monitor
druid.stat-view-servlet.login-password=<强口令>
druid.stat-view-servlet.allow=10.0.0.0/8
druid.stat-view-servlet.deny=0.0.0.0/0
# 或生产环境直接关闭 stat-view-servlet,改由指标系统采集

两种组件的辨认与处置

组件典型路径或端口处置重点
Druid 连接池/druid/index.html、/druid/sql.html加登录与来源限制,或直接关闭
Apache Druid8888 控制台与查询接口启用认证,限制来源,不进公网
混淆情形两者都常用 druid 前缀先确认进程与依赖,再定加固方案
监控页加了登录但 allow 列表覆盖整段内网时,横向可达的主机仍可尝试登录:来源收敛要和认证一起做,才形成真正的收敛效果。
关闭监控页前先确认依赖:部分团队用页面做日常巡检,关掉后要提前把指标切到监控系统,否则运维侧会立刻反弹。

易错点

  • 监控页加了登录但 allow 列表覆盖到整段内网:横向可达主机仍可尝试
  • 把 Apache Druid 控制台和连接池监控页当同一件事处理:加固方案用错位置
  • 只在网关加认证:内网直连应用端口仍可绕过网关访问监控页
  • 关闭监控页却不提供替代视图:运维失去观测手段,很快又会被人手工打开

数据来源与参考

  • Alibaba Druid 文档(stat-view-servlet 配置)
  • Apache Druid 文档(安全与认证)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌