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 枚举执行器端点路径
- 确认应用使用 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 基本防护
-
引入安全依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> -
启用安全限制:
management.security.enabled=true -
配置身份验证:
@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 进阶防护
-
设置独立管理端口:
management.server.port=8081 management.server.address=127.0.0.1 -
禁用敏感端点:
endpoints.env.enabled=false endpoints.heapdump.enabled=false endpoints.shutdown.enabled=false -
自定义端点路径:
management.endpoints.web.base-path=/internal-monitor -
限制访问IP:
management.server.address=127.0.0.1
五、总结
Spring Boot Actuator 配置不当可能导致严重的安全问题,攻击者可以利用泄露的信息进行进一步攻击。开发者应当:
- 始终为 Actuator 端点配置适当的安全措施
- 禁用不必要的端点
- 定期检查端点配置
- 监控 Actuator 端点的访问日志
安全团队在渗透测试中应当重点关注 Actuator 端点的暴露情况,并按照本文描述的方法进行全面的安全评估。