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就可以看到数据监控信息,展示结果如下图。
使用druid我们可以很方便来监控数据源的相关信息。但是如果没有配置druid的访问用户名和密码(并非druid漏洞,属于
开发人员疏忽导致,所以一定要多看官方文档要有安全意识),那么当进行安全检测的时候,你也会遇到和我一样的一个高危漏洞。
检测与利用:
直接在网站的url中后加上:
/druid/index.html
如果可以无需登录,即可登录到Druid监控界面 其实在官方文档中已经将明了,但是当程序员操作不当的时候,就会出现这个漏洞(我们项目碰到改漏洞就是因为使用人员没有做相关配置,所以导致出现这个漏洞)。
解决
解决起来也简单两种方式
- 直接禁用(过于粗暴结合自己场景来选择)
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