前言
安全组针对系统漏扫发现系统存在Druid未授权访问,会引发泄露系统敏感信息,漏洞链接为ip:端口/druid/index.html
,可以清楚的查看数据库的相关连接信息,如下图所示:
漏洞修复
1、关闭Druid监控页面
在Druid的配置中,有一个控制监控页面是否启用的配置,默认为true,开启监控页面,我们可以设置其为false彻底关闭监控页面,配置如下:
#application.properties配置
spring.datasource.druid.stat-view-servlet.enabled = false
#application.yml配置
spring:
datasource:
druid:
stat-view-servlet:
enabled: false
再次访问Druid监控页面,无法展示
2、设置账密登录监控页面
通过暴力关闭监控页面的方式也阻断了对Druid的监控,因此我们可以配置监控页面的访问控制,注册一个Druid访问控制的bean,如下
import com.alibaba.druid.support.http.StatViewServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* @version V1.0
* @ClassName: DruidConfig
* @Description: Druid 授权访问
*/
@Configuration
public class DruidConfig {
// 注册后台监控界面
@Bean
public ServletRegistrationBean servletRegistrationBean(){
// 绑定后台监控界面的路径 为localhost/druid
ServletRegistrationBean bean=new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
Map<String,String>map=new HashMap<>();
// 设置后台界面的用户名
map.put("loginUsername","");
//设置后台界面密码
map.put("loginPassword","");
// 设置那些ip允许访问," " 为所有
map.put("allow","");
bean.setInitParameters(map);
return bean;
}
}
上面配置的用户名密码等属性可以单独抽到配置文件,以配置项的形式读取,配置完成后,启动项目,访问监控页面,如下