Springboot之actuator配置不当的漏洞利用
字数 2725 2025-08-18 11:37:50

Spring Boot Actuator 配置不当漏洞分析与利用指南

一、Actuator 简介

Spring Boot Actuator 是 Spring Boot 提供的用于应用系统自省和监控的功能模块,开发者可以通过 Actuator 方便地查看和统计应用系统的监控指标。

1.1 原生端点列表

HTTP 方法 路径 描述
GET /autoconfig 提供自动配置报告,记录哪些自动配置条件通过/未通过
GET /configprops 描述配置属性(包含默认值)如何注入 Bean
GET /beans 描述应用程序上下文里全部的 Bean 及其关系
GET /dump 获取线程活动快照
GET /env 获取全部环境属性
GET /env/{name} 根据名称获取特定的环境属性值
GET /health 报告应用程序的健康指标(由 HealthIndicator 的实现类提供)
GET /info 获取应用程序的定制信息(由 info 打头的属性提供)
GET /mappings 描述全部 URI 路径及其与控制器(包含 Actuator 端点)的映射关系
GET /metrics 报告各种应用程序度量信息(如内存用量和 HTTP 请求计数)
GET /metrics/{name} 报告指定名称的应用程序度量值
POST /shutdown 关闭应用程序(需 endpoints.shutdown.enabled 设置为 true,默认为 false)
GET /trace 提供基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等)

二、漏洞发现方法

2.1 识别 Spring Boot 应用

方法一:通过网页图标识别

  • 检查应用首页的 favicon.ico
  • Spring Boot 默认使用绿色小叶子图标
  • 虽然不是 100% 确定,但准确率可达 80% 以上

方法二:通过错误页面识别

  • 触发 4xx 或 5xx 错误
  • 检查是否出现 Spring Boot 默认的 Whitelabel Error Page
  • 典型特征:白色背景,黑色错误信息,底部有 Spring Boot 版本信息

2.2 枚举执行器端点路径

  1. 确认应用使用 Spring Boot 框架后
  2. 枚举站点的一级、二级、三级目录
  3. 编写脚本探测每个目录下是否存在 Actuator 端点
  4. 常见端点路径包括但不限于:
    • /actuator
    • /monitor
    • /manage
    • /metrics
    • /env

三、漏洞利用方法

3.1 认证字段获取

利用路径:/trace

利用方法

  1. 访问 /trace 端点
  2. 检查记录的 HTTP 请求信息
  3. 查找包含认证信息的字段(token、cookie 等)
  4. 使用获取的认证字段冒充其他用户

危害

  • 可获取其他用户权限
  • 可能导致水平越权或垂直越权

3.2 数据库凭证泄露

利用路径:/env

利用方法

  1. 访问 /env 端点
  2. 搜索数据库相关配置(mysql、mongodb 等)
  3. 提取数据库连接字符串、用户名和密码
  4. 尝试直接连接数据库

危害

  • 可直接访问数据库
  • 可能导致数据泄露或数据篡改
  • 漏洞等级可从高危提升为严重

3.3 Git 项目泄露

利用路径:/health

利用方法

  1. 访问 /health 端点
  2. 检查返回信息中是否包含 Git 项目地址
  3. 直接访问发现的 Git 地址
  4. 下载项目源代码

危害

  • 获取应用源代码
  • 可进行代码审计发现更多漏洞
  • 可能包含敏感配置信息

3.4 内存信息泄露

利用路径:/heapdump

利用方法

  1. 访问 /heapdump 端点
  2. 下载返回的 GZip 压缩 hprof 堆转储文件
  3. 使用 Android Studio 或其他分析工具打开
  4. 搜索内存中的敏感信息(如后台账号密码)

危害

  • 可能获取管理员凭证
  • 可直接登录后台系统
  • 结合其他漏洞可造成更大危害

四、安全防护措施

4.1 基本防护

  1. 引入安全依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    
  2. 启用安全限制

    management.security.enabled=true
    
  3. 配置身份验证

    @Configuration
    public class ActuatorSecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.requestMatcher(EndpointRequest.toAnyEndpoint())
                .authorizeRequests()
                .anyRequest().hasRole("ACTUATOR")
                .and()
                .httpBasic();
        }
    }
    

4.2 进阶防护

  1. 设置独立管理端口

    management.server.port=8081
    management.server.address=127.0.0.1
    
  2. 禁用敏感端点

    endpoints.env.enabled=false
    endpoints.heapdump.enabled=false
    endpoints.shutdown.enabled=false
    
  3. 自定义端点路径

    management.endpoints.web.base-path=/internal-monitor
    
  4. 限制访问IP

    management.server.address=127.0.0.1
    

五、总结

Spring Boot Actuator 配置不当可能导致严重的安全问题,攻击者可以利用泄露的信息进行进一步攻击。开发者应当:

  1. 始终为 Actuator 端点配置适当的安全措施
  2. 禁用不必要的端点
  3. 定期检查端点配置
  4. 监控 Actuator 端点的访问日志

安全团队在渗透测试中应当重点关注 Actuator 端点的暴露情况,并按照本文描述的方法进行全面的安全评估。

Spring Boot Actuator 配置不当漏洞分析与利用指南 一、Actuator 简介 Spring Boot Actuator 是 Spring Boot 提供的用于应用系统自省和监控的功能模块,开发者可以通过 Actuator 方便地查看和统计应用系统的监控指标。 1.1 原生端点列表 | HTTP 方法 | 路径 | 描述 | |-----------|-------------------|----------------------------------------------------------------------| | GET | /autoconfig | 提供自动配置报告,记录哪些自动配置条件通过/未通过 | | GET | /configprops | 描述配置属性(包含默认值)如何注入 Bean | | GET | /beans | 描述应用程序上下文里全部的 Bean 及其关系 | | GET | /dump | 获取线程活动快照 | | GET | /env | 获取全部环境属性 | | GET | /env/{name} | 根据名称获取特定的环境属性值 | | GET | /health | 报告应用程序的健康指标(由 HealthIndicator 的实现类提供) | | GET | /info | 获取应用程序的定制信息(由 info 打头的属性提供) | | GET | /mappings | 描述全部 URI 路径及其与控制器(包含 Actuator 端点)的映射关系 | | GET | /metrics | 报告各种应用程序度量信息(如内存用量和 HTTP 请求计数) | | GET | /metrics/{name} | 报告指定名称的应用程序度量值 | | POST | /shutdown | 关闭应用程序(需 endpoints.shutdown.enabled 设置为 true,默认为 false)| | GET | /trace | 提供基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等) | 二、漏洞发现方法 2.1 识别 Spring Boot 应用 方法一:通过网页图标识别 检查应用首页的 favicon.ico Spring Boot 默认使用绿色小叶子图标 虽然不是 100% 确定,但准确率可达 80% 以上 方法二:通过错误页面识别 触发 4xx 或 5xx 错误 检查是否出现 Spring Boot 默认的 Whitelabel Error Page 典型特征:白色背景,黑色错误信息,底部有 Spring Boot 版本信息 2.2 枚举执行器端点路径 确认应用使用 Spring Boot 框架后 枚举站点的一级、二级、三级目录 编写脚本探测每个目录下是否存在 Actuator 端点 常见端点路径包括但不限于: /actuator /monitor /manage /metrics /env 三、漏洞利用方法 3.1 认证字段获取 利用路径 :/trace 利用方法 : 访问 /trace 端点 检查记录的 HTTP 请求信息 查找包含认证信息的字段(token、cookie 等) 使用获取的认证字段冒充其他用户 危害 : 可获取其他用户权限 可能导致水平越权或垂直越权 3.2 数据库凭证泄露 利用路径 :/env 利用方法 : 访问 /env 端点 搜索数据库相关配置(mysql、mongodb 等) 提取数据库连接字符串、用户名和密码 尝试直接连接数据库 危害 : 可直接访问数据库 可能导致数据泄露或数据篡改 漏洞等级可从高危提升为严重 3.3 Git 项目泄露 利用路径 :/health 利用方法 : 访问 /health 端点 检查返回信息中是否包含 Git 项目地址 直接访问发现的 Git 地址 下载项目源代码 危害 : 获取应用源代码 可进行代码审计发现更多漏洞 可能包含敏感配置信息 3.4 内存信息泄露 利用路径 :/heapdump 利用方法 : 访问 /heapdump 端点 下载返回的 GZip 压缩 hprof 堆转储文件 使用 Android Studio 或其他分析工具打开 搜索内存中的敏感信息(如后台账号密码) 危害 : 可能获取管理员凭证 可直接登录后台系统 结合其他漏洞可造成更大危害 四、安全防护措施 4.1 基本防护 引入安全依赖 : 启用安全限制 : 配置身份验证 : 4.2 进阶防护 设置独立管理端口 : 禁用敏感端点 : 自定义端点路径 : 限制访问IP : 五、总结 Spring Boot Actuator 配置不当可能导致严重的安全问题,攻击者可以利用泄露的信息进行进一步攻击。开发者应当: 始终为 Actuator 端点配置适当的安全措施 禁用不必要的端点 定期检查端点配置 监控 Actuator 端点的访问日志 安全团队在渗透测试中应当重点关注 Actuator 端点的暴露情况,并按照本文描述的方法进行全面的安全评估。