Spring Boot Actuator未授权访问排查和整改指南

Spring Boot Actuator未授权访问排查和整改指南

  • 漏洞介绍

Actuator 是 SpringBoot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。然而,其默认配置会出现接口未授权访问,导致部分接口会泄露网站数据库连接信息等配置信息,使用Jolokia库特性甚至可以远程执行任意代码,获取服务器权限。

二、漏洞危害

1、信息泄露:未授权的访问者可以通过Actuator端点获取敏感信息,如应用程序的配置信息、运行时环境、日志内容等。这些信息可以被攻击者用于识别系统的弱点,并进行更深入的攻击。

2、系统破坏:攻击者可以通过Actuator端点的未授权访问,执行恶意操作,如修改配置、篡改数据、重启应用程序、关闭数据库连接等,从而破坏应用程序的正常运行。

3、命令执行:当系统使用Jolokia库特性甚至可以远程执行任意代码,获取服务器权限。

三、漏洞等级

风险等级:高危。

影响范围:所有版本且无安全配置的系统。

潜在影响:敏感数据暴露、系统配置被篡改、命令执行导致服务器沦陷。

四、Actuator未授权访问认定标准(重要)

  1. 访问端点路径:Actuator提供了一组默认的端点路径,如/actuator、/env、/metrics等。如果这些端点路径可以被未经授权的用户或系统访问,且响应包含系统的敏感信息、配置信息、性能指标等,则存在未授权访问漏洞。/actuator
    /auditevents
    /autoconfig
    /beans
    /caches
    /conditions
    /configprops
    /docs
    /dump
    /env
    /flyway
    /health
    /heapdump
    /httptrace
    /info
    /intergrationgraph
    /jolokia
    /logfile
    /loggers
    /liquibase
    /metrics
    /mappings
    /prometheus
    /refresh
    /scheduledtasks
    /sessions
    /shutdown
    /trace
    /threaddump
    /actuator/auditevents
    /actuator/beans
    /actuator/health
    /actuator/conditions
    /actuator/configprops
    /actuator/env
    /actuator/info
    /actuator/loggers
    /actuator/heapdump
    /actuator/threaddump
    /actuator/metrics
    /actuator/scheduledtasks
    /actuator/httptrace
    /actuator/mappings
    /actuator/jolokia
    /actuator/hystrix.stream
  2. 在访问Actuator端点后,可以执行一些可能的未授权操作,如重启应用程序、关闭数据库连接等。
  3. 访问 /jolokia/list 接口,查看是否存在 ch.qos.logback.classic.jmx.JMXConfigurator 和 reloadByURL 关键词。若存在,则有可能造成造成命令执行。

五、漏洞通报案例(重要)

确系为重要域名或业务,可导致系统敏感信息泄露;

确系为重要域名或业务,可导致远程命令执行。

六、常见的Actuator未授权配置

以下是一些常见的Actuator未授权配置问题:

1、缺乏身份验证和授权:默认情况下,Actuator可能未配置任何身份验证和授权机制,导致任何用户都可以访问端点。

management:

 security:

 enabled: false

2、使用默认的敏感端点路径:默认情况下,Actuator的一些敏感端点路径(如/actuator/shutdown、/actuator/env)可能对未授权用户开放。

management:

  endpoints:

    web:

      exposure:

        include: "*"

3、配置IP过滤错误:如果IP过滤配置不正确,可能允许来自未授权IP地址的访问。

management:

  endpoints:

    web:

      base-path: /actuator

      exposure:

        include: "*"

  security:

    ip-restrictions:

      enabled: true

      remote-addresses: 0.0.0.0/0

4、未隐藏敏感端点:Actuator提供了一些敏感端点(如/actuator/mappings、/actuator/trace),可能会暴露过多的系统信息。

management:

  endpoints:

    web:

      exposure:

        include: "*"

      sensitive: false

  • 漏洞利用方式

springboot actuator未授权访问漏洞的利用大致有:路由地址及接口调用详情泄漏、获取被星号脱敏的密码的明文、远程代码执行。

具体利用方式,可参考

SpringBootVulExploit(GitHub - LandGrey/SpringBootVulExploit: SpringBoot 相关漏洞学习资料,利用方法和技巧合集,黑盒安全评估 check list)

八、整改要求(重要)

以下是针对Spring Boot Actuator未授权访问漏洞的建议措施:

1、禁用所有接口,将配置改成:

endpoints.enabled = false

2、引入依赖:

spring-boot-starter-security

org.springframework.boot

spring-boot-starter-security

3、开启security功能,配置访问权限验证,类似配置如下:

management.port=8099

management.security.enabled=true

security.user.name=xxxxx

security.user.password=xxxxx

4、配置过滤器:通过配置Web安全过滤器,限制对Actuator端点的访问,仅允许受信任的IP地址或子网进行访问。

5、禁用敏感端点:根据实际需求,禁用或限制不需要的Actuator端点,避免将过多敏感信息暴露给未授权访问者。

6、定制端点路径:通过配置自定义的端点路径,避免使用默认的端点路径,从而降低被自动化扫描工具或攻击者发现的可能性。

7、日志和监控:定期监控和审计Actuator端点的访问日志,及时发现异常访问,并采取适当的响应措施。

            

                                       

你可能感兴趣的:(java)