Spring Boot Actuator未授权访问漏洞和Apache Druid 漏洞修复

Spring Boot Actuator未授权访问漏洞

详细描述

​ Actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息。

解决办法

1.配置认证
在项目的pom.xml文件下引入spring-boot-starter-security依赖

<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-securityartifactId>
dependency>

然后在application.properties中开启security功能,配置访问账号密码,重启应用即可弹出。

management.security.enabled=true
security.user.name=admin
security.user.password=admin

2.禁用接口
禁用全部接口:

endpoints.enabled = false

禁用部分接口,如env:

endpoints.env.enabled = false

Apache Druid 未授权访问

详细描述

Apache Druid 是用Java编写的面向列的开源分布式数据存储,旨在快速获取大量事件数据,并在数据之上提供低延迟查询。

Apache Druid 默认情况下缺乏授权认证,从而导致未授权访问漏洞。

解决办法

增加用户名密码配置。

代码修改WebConfiguration
	@Value("${spring.druid.allowed:?}")
	private String druidAllowed;
	@Value("${spring.druid.password:?}")
	private String druidPassword;
	@Bean
	public ServletRegistrationBean servletRegistrationBean(){
		ServletRegistrationBean druidServlet = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
		Map map = new HashMap();
		if(!"?".equals(druidPassword)) {
			map.put("loginUsername", "admin");
			map.put("loginPassword", druidPassword);
		}
		if (!"?".equals(druidAllowed)) {
			map.put("allow", druidAllowed);
		}
		druidServlet.setInitParameters(map);
		return druidServlet;
	}
配置文件修改

下面的配置为登录账号和密码

spring.druid.allowed=admin
spring.druid.password=123456
登录页面

http://{ip}:{port}/druid/login.html
登录账号密码为配置文件配置allowed和password
Spring Boot Actuator未授权访问漏洞和Apache Druid 漏洞修复_第1张图片

成功页面

Spring Boot Actuator未授权访问漏洞和Apache Druid 漏洞修复_第2张图片

你可能感兴趣的:(Java,web,Spring,java,安全漏洞,spring,boot)