漏洞原因
Druid 是一个 Java 数据库连接池,它提供了丰富的监控功能来帮助管理和优化数据库连接。默认情况下,Druid 的监控页面 (stat-view-servlet) 是启用的,并且可能在配置中包含一个默认的或弱的登录密码。这种设置使得攻击者能够通过访问监控页面获取敏感的数据库连接信息或执行其他恶意操作
如果监控页面没有正确配置,攻击者可以利用以下漏洞:
未授权访问:监控页面默认可能不需要认证或者认证机制不严密。
默认密码:使用了默认的或者弱密码,容易被暴力破解。
这些漏洞可能会导致数据泄露或其他安全问题。
修改方法
为了提高安全性,建议对 Druid 监控页面进行如下配置,以确保只有授权用户可以访问并增强安全性。
方法1禁用监控页面
如果不需要监控功能,最好禁用它。修改 Druid 配置,将 stat-view-servlet 的 enabled 设置为 false:
druid:
stat-view-servlet:
enabled: false
方法2配置访问权限
如果需要启用监控页面,确保配置正确的访问控制。设置强密码,并限制允许访问的 IP 地址范围。以下是一个示例配置:
druid:
stat-view-servlet:
enabled: true
login-username: strongusername
login-password: strongpassword
allow: 127.0.0.1 # 只允许本地访问,可以设置为特定 IP 地址范围
方法3配置 Web 监控过滤器
确保 web-stat-filter 已启用,并设置合适的访问权限:
druid:
web-stat-filter:
enabled: true
url-pattern: /*
完整配置如下:
spring:
datasource:
url: jdbc:mysql://172.16.8.118:3306/test_cloud?useUnicode=TRUE&characterEncoding=utf-8&noAccessToProcedureBodies=TRUE&useSSL=FALSE&serverTimezone=GMT%2B8&socketTimeout=30000
username: doupel
password: doUpel@123.com
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
use-global-data-source-stat: true
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
stat-view-servlet:
enabled: true
login-username: doupel
loginPassword: QpxgUkWHNNaMU7P4
allow:
web-stat-filter:
enabled: false