【原理扫描】Spring Boot Actuator未授权访问漏洞

问题描述

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


漏洞场景:

注:对于Spring 1x,它们在根URL下注册,并且在2x中它们移动到“/actuator/”基本路径。
例如:http://ip:port/actuator/env

以下Actuator端点可能具有安全隐患,从而导致可能的漏洞:

  1. /dump - 显示线程转储(包括堆栈跟踪)
  2. /trace - 显示最后几条HTTP消息(可能包含会话标识符)
  3. /logfile - 输出日志文件的内容
  4. /shutdown - 关闭应用程序
  5. /mappings - 显示所有MVC控制器映射
  6. /env - 提供对配置环境的访问
  7. /restart - 重新启动应用程序

解决方案:

1:配置认证

在项目的pom.xml文件下引入spring-boot-starter-security依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</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

具体实例:

在yml文件中进行配置,配置如下:

management:
  endpoints:
    web:
      exposure:
        include: "*"
    enabled-by-default: false
  endpoint:
    health:
      show-details: always

你可能感兴趣的:(漏洞安全,Java,java,系统安全)