前言
安全组针对系统漏扫发现系统存在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 {// 注册后台监控界面@Beanpublic ServletRegistrationBean servletRegistrationBean(){// 绑定后台监控界面的路径 为localhost/druidServletRegistrationBean 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;}
}
上面配置的用户名密码等属性可以单独抽到配置文件,以配置项的形式读取,配置完成后,启动项目,访问监控页面,如下