Spring Boot Actuator未授权访问排查和整改指南
作者:mmseoamin日期:2023-12-11

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端点的访问日志,及时发现异常访问,并采取适当的响应措施。