Spring Boot Actuator未授权访问漏洞

这篇具有很好参考价值的文章主要介绍了Spring Boot Actuator未授权访问漏洞。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.问题

Spring Boot Actuator 端点的未授权访问漏洞是一个安全性问题,可能会导致未经授权的用户访问敏感的应用程序信息。
可是并不用太过担心,Spring Boot Actuator 默认暴漏的信息有限,一般情况下并不会暴露敏感数据。
注册中心有些功能集成了actuator,如果同时使用eureka和actuator,可以在eureka中点击注册链接查看健康状态信息(/actuator/info)。但是删除 Spring Boot Actuator 的引用对 Eureka 注册中心本身并没有直接影响。Eureka 注册中心是用于管理微服务实例的,而 Spring Boot Actuator 提供了用于监控和管理单个微服务实例的功能。
Spring Boot Actuator 的存在与否不会影响 Eureka 注册中心的核心功能,即注册和发现微服务。删除 Spring Boot Actuator 的引用只会影响您的单个微服务实例,使您失去了通过 Actuator 暴露的一些监控和管理功能。

2. 解决方案

2.1 关闭不必要的端点

在默认情况下,Spring Boot Actuator 并不会暴露所有端点。您可以在配置文件中配置 management.endpoints.web.exposure.include 或 management.endpoints.web.exposure.exclude 属性,以控制哪些端点是公开的或不公开的。确保只公开需要的端点,将不必要的端点关闭。

management:
  endpoints:
    enabled-by-default: false
    health: 
      enabled: true  
    web:
      base-path: /myownurl
      exposure:
        exclude: '*'

2.2 添加访问权限控制

您可以通过配置 Spring Security 来限制对 Actuator 端点的访问。Spring Security 可以帮助您实现身份验证和授权机制,确保只有授权的用户可以访问 Actuator 端点。

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/actuator/**").hasRole("ADMIN") // 设置只有具有 ADMIN 角色的用户可以访问 Actuator 端点
                .anyRequest().permitAll()
            .and()
            .httpBasic(); // 启用基本认证
    }
}

3. 了解actuator

3.1 概念

Spring Boot Actuator 是 Spring Boot 框架中的一个模块,它提供了一组用于监控和管理 Spring Boot 应用程序的功能。Actuator 使开发人员能够在应用程序运行时了解应用程序的状态、性能和健康情况,以及一些管理操作。它主要有以下作用:

应用程序健康监控:Actuator 提供了 /actuator/health 端点,可以用来检查应用程序的健康状态。这对于自动化运维、监控系统和负载均衡器非常有用。您可以在应用程序发生问题时通过此端点检查应用程序是否健康,以及有关问题的更多信息。

度量指标:通过 /actuator/metrics 端点,可以获取关于应用程序运行状态的度量指标,如内存使用、线程数、HTTP 请求等。这些指标对于性能优化和容量规划很有帮助。

应用程序信息:通过 /actuator/info 端点,您可以暴露自定义的应用程序信息,如版本号、作者、描述等。这对于构建信息展示页面或者提供有关应用程序的元数据很有用。

Spring Beans 和 Endpoints 显示:通过 /actuator/beans 和 /actuator/mappings 端点,您可以查看应用程序中所有的 Spring Bean 和 Spring MVC 的映射路径,这对于调试和监控应用程序的组件很有帮助。

环境属性和配置:通过 /actuator/env 端点,可以查看应用程序的环境属性和配置信息。

日志级别管理:通过 /actuator/loggers 端点,您可以查看和修改应用程序的日志级别。

HTTP 请求跟踪:通过 /actuator/trace 端点,您可以查看最近的 HTTP 请求的跟踪信息,用于排查问题。

Spring Boot Actuator 提供了丰富的端点,以帮助开发人员更好地理解和管理他们的应用程序。它在监控、调试和运维方面提供了强大的功能,是构建可管理的 Spring Boot 应用程序的重要工具。

3.2 配置详情

在默认情况下,Spring Boot Actuator 公开了一些常用的端点,但也有一些端点是不公开的。这是为了安全性考虑,避免在生产环境中泄漏敏感信息。

以下是 Spring Boot 2.x 版本默认情况下公开的一些端点:

/actuator/health:公开,默认允许所有用户访问。提供应用程序的健康状况信息。

/actuator/info:公开,默认允许所有用户访问。提供自定义的应用程序信息。

/actuator/metrics:不公开,默认不允许访问。提供各种度量指标,如内存使用、线程数、HTTP 请求等。

/actuator/mappings:不公开,默认不允许访问。展示 Spring MVC 中的所有映射路径。

/actuator/env:不公开,默认不允许访问。显示应用程序的环境属性和配置。

/actuator/beans:不公开,默认不允许访问。显示 Spring Bean 的列表。

/actuator/trace:不公开,默认不允许访问。显示最近的 HTTP 请求的跟踪信息。

/actuator/threaddump:不公开,默认不允许访问。生成当前线程的线程转储。

/actuator/auditevents:不公开,默认不允许访问。提供应用程序的审计事件信息。

/actuator/loggers:不公开,默认不允许访问。显示和修改应用程序的日志配置。

/actuator/httptrace:不公开,默认不允许访问。提供 HTTP 跟踪信息,用于记录 HTTP 请求和响应的详细信息。

您可以通过在配置文件中使用 management.endpoints.web.exposure.include 或 management.endpoints.web.exposure.exclude 属性来控制哪些端点是公开的或不公开的。默认情况下,info 和 health 是允许公开的。
例如,以下配置将会关闭 mappings 端点的公开:
关闭 mappings 端点的公开
management.endpoints.web.exposure.exclude=mappings
根据您的需求,您可以灵活地配置哪些 Actuator 端点是可以访问的。确保在生产环境中仅公开必要的端点,并保护敏感信息。文章来源地址https://www.toymoban.com/news/detail-648637.html

3.3 注意事项

  1. springboot项目不会默认导入Spring Boot Actuator
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  1. 如果其他组件有引入但是不知道是哪个组件,使用传递依赖引入,进入项目根目录,使用mvn dependency:tree列出所有依赖项及其传递依赖项。

到了这里,关于Spring Boot Actuator未授权访问漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spring boot actuator 禁用后,/actuator仍可正常访问

    项目上线后,被测试出actuator没有关闭,关闭后,仍可正常访问/actuator端点,只是类似/actuator/env这样的无法访问,现在就想把/actuator端点也给禁用了。 spring boot 2.x关闭actuator配置,关闭后,仍可正常访问/actuator端点 说明spring boot 2.x无法通过配置的方式禁用/actuator端点 大部分

    2024年01月19日
    浏览(38)
  • 微信小程序的授权登录-Java 后端 (Spring boot)

    微信开发文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 一个可以测试的微信小程序 此微信小程序的APPID和APPscret(至开发者后台获取) 从时序图我们可以了解到流程大致分为两步: 小程序端获取code后传给Java后台 Java后台获取code后向微信后台接口

    2024年02月09日
    浏览(55)
  • Spring Boot Actuator详解

    Spring Boot Actuator 模块提供了生产级别的功能,比如 健康检查 , 审计 , 指标收集 , HTTP跟踪 等,帮助我们监控和管理Spring Boot应用。 这个模块是一个采集应用内部信息暴露给外部的模块,上述的功能都可以通过HTTP和JMX访问。 因为暴露内部信息的特性,Actuator也可以和一些外

    2024年02月07日
    浏览(40)
  • Spring Boot中的Actuator是什么?Spring Boot中的Starter依赖是什么?

    在Spring Boot中,Actuator是一种用于监控和管理应用程序的工具。它提供了一些额外的端点和功能,使开发人员能够更好地了解和控制他们的应用程序。 Actuator提供了以下功能: 指标收集:Actuator可以收集并显示有关应用程序的指标,例如内存使用情况、线程数、请求处理时间等

    2024年02月09日
    浏览(45)
  • Spring Boot自带监控组件—Actuator介绍

    Actuator是Spring Boot提供的应用系统监控的开源框架,它是Spring Boot体系中非常重要的组件。它可以轻松实现应用程序的监控治理,支持通过众多REST接口、远程Shell和JMX收集应用的运行情况。 Actuator的核心是端点(Endpoint),它用来监视、提供应用程序的信息,Spring Boot提供的sp

    2024年02月04日
    浏览(41)
  • Spring Boot2.xx开启监控 Actuator

                            docker实战(一):centos7 yum安装docker docker实战(二):基础命令篇 docker实战(三):docker网络模式(超详细) docker实战(四):docker架构原理 docker实战(五):docker镜像及仓库配置 docker实战(六):docker 网络及数据卷设置 docker实战(七):docker 性质及版本选择 认知升维: 道、法

    2024年02月14日
    浏览(51)
  • 如何在Spring Boot中禁用Actuator端点安全性?

    在Spring Boot中,禁用Actuator端点的安全性可以通过配置来实现。Actuator端点是Spring Boot应用程序的管理和监控端点,它们默认受到Spring Security的保护。如果希望完全禁用Actuator端点的安全性,我们可以按照以下步骤进行操作: 确保我们的pom.xml文件中包含了Spring Boot Starter依赖项。

    2024年02月04日
    浏览(39)
  • java Spring Boot 2 /actuator/health 返回 HTTP 404

    spring-boot-starter-actuator官方文档 Spring Boot 包含许多附加功能,可帮助您在将应用程序投入生产时监控和管理应用程序。您可以选择使用 HTTP 端点或 JMX 来管理和监控您的应用程序。审核、运行状况和指标收集也可以自动应用于您的应用程序。 该spring-boot-actuator模块提供了 Spri

    2024年01月18日
    浏览(47)
  • Spring Boot 3.x 系列【34】Actuator入门案例及端点配置

    有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot版本3.0.5 源码地址:https://gitee.com/pearl-organization/study-spring-boot3 在生产环境很有必要对应用进行 监控、追踪、审计、控制 ,假如数据库突然挂了,直到客户打电话骂娘时~ 我们才知道这回事,就很尴尬了🤣🤣🤣 Sp

    2024年02月05日
    浏览(39)
  • Spring Boot应用集成Actuator组件以后怎么自定义端点暴露信息

    在平时业务开发中,我们往往会在spring Boot项目中集成Actuator组件进行系统监控,虽然Actuator组件暴露的端点信息已经足够丰富了,但是特殊场景下,我们也需要自己暴露端点信息,此时应该怎么操作呢? 1. 创建一个spring Boot项目,导入相关依赖 3. 暴露端点 注意: 自定义的端

    2024年02月21日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包