记录一次使用springboot druid时遇到未授权访问数据的安全漏洞

1,407 阅读2分钟

springboot druid数据源安全漏洞

在项目中如果有使用druid作为数据库连接池和监控,那么一定不要忘记给Druid配置访问用户名和密码,否则你可以也会遇到和我一样的问题。

那么什么是Druid? Druid是阿里巴巴数据库出品的,为监控而生的数据库连接池,并且Druid提供的监控功能,监控SQL的执行时间、监控Web URI的请求、Session监控。 使用方式很简单只需要引入对应依赖即可使用。 github项目地址

maven

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.10</version>
</dependency>

gradle

compile 'com.alibaba:druid-spring-boot-starter:1.1.10'

问题描述

关于Druid的使用方式可以参考官方文档,使用起来很方便,服务启动后在服务url后添加/druid/index.html就可以看到数据监控信息,展示结果如下图。 image.png 使用druid我们可以很方便来监控数据源的相关信息。但是如果没有配置druid的访问用户名和密码(并非druid漏洞,属于开发人员疏忽导致,所以一定要多看官方文档要有安全意识),那么当进行安全检测的时候,你也会遇到和我一样的一个高危漏洞。 image.png 检测与利用:

直接在网站的url中后加上:
/druid/index.html
如果可以无需登录,即可登录到Druid监控界面 其实在官方文档中已经将明了,但是当程序员操作不当的时候,就会出现这个漏洞(我们项目碰到改漏洞就是因为使用人员没有做相关配置,所以导致出现这个漏洞)。 image.png

解决

解决起来也简单两种方式

  • 直接禁用(过于粗暴结合自己场景来选择)
spring.datasource.druid.stat-view-servlet.enabled=true
  • 配置用户名和密码推荐
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.login-username=root
spring.datasource.druid.stat-view-servlet.login-password=123