一、漏洞原理
Spring Boot Actuator 是 Spring Boot 框架提供的监控与管理模块,通过暴露 HTTP 端点(如
/health
、/env
)或 JMX 接口,支持开发者实时获取应用运行状态(如内存使用、线程池状态、数据库连接等)。默认配置下,部分端点存在未授权访问风险,攻击者可通过直接访问这些端点获取敏感信息,甚至执行恶意操作。
二、漏洞成因
默认配置不安全
- Spring Boot 1.x 版本默认开启多个高风险端点(如
/env
、/heapdump
),2.x 版本虽优化了默认配置,但仍可能因误配置(如显式暴露所有端点)导致漏洞。- 示例:在
application.properties
中配置management.endpoints.web.exposure.include=*
会暴露所有端点。端点路径可预测
Actuator 端点路径标准化(如/actuator/env
),攻击者可通过自动化工具快速枚举接口。信息聚合风险
多个端点的组合利用可推导出系统架构、数据库凭据、内部 API 等关键信息。例如:
/env
端点可能泄露数据库密码、API 密钥。/trace
端点可能记录 HTTP 请求头(含会话标识符)。/heapdump
端点可能包含内存快照(含敏感数据)。
三、漏洞影响
- 敏感信息泄露
- 攻击者可获取应用程序配置、运行时环境、日志内容等,用于识别系统弱点并发起进一步攻击。
- 示例:通过
/env
端点获取 MySQL 数据库密码,进而访问数据库。- 系统破坏
- 攻击者可修改配置、篡改数据、重启应用或关闭数据库连接,导致服务中断。
- 示例:通过
/shutdown
端点(需显式启用)关闭应用。- 远程代码执行(RCE):若系统使用 Jolokia 库(通过
/jolokia
端点暴露 JMX),攻击者可远程执行任意代码,获取服务器权限。
四、漏洞检测
- 识别 Spring Boot 应用:通过默认图标(绿色树叶)或报错页面(如 404 页面显示 Spring Boot 默认错误信息)判断。
- 枚举 Actuator 端点:使用工具(如
SpringBoot-Scan
)扫描常见端点路径:/actuator/autoconfig /actuator/beans /actuator/env /actuator/health /actuator/info /actuator/mappings /actuator/metrics /actuator/threaddump /actuator/heapdump /actuator/jolokia
- 验证未授权访问:直接访问端点(如
http://target.com/actuator/env
),若返回敏感信息则存在漏洞。
五、修复方案
- 配置安全策略
- 引入 Spring Security:在
pom.xml
中添加依赖并配置认证:在<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
application.properties
中启用安全配置:management.security.enabled=true security.user.name=admin security.user.password=强密码
- 禁用高风险端点
- 显式禁用敏感端点(如
/env
、/heapdump
):management.endpoints.web.exposure.exclude=env,heapdump,threaddump
- 或完全禁用 Actuator:
management.server.port=-1
- 限制访问 IP 或端口:通过防火墙规则或 Nginx 配置限制 Actuator 端口的访问来源。
- 使用 HTTPS 加密通信:确保 Actuator 端点仅通过 HTTPS 访问,防止数据截获。
- 更新依赖库:定期升级 Spring Boot 及相关依赖至最新版本,修复已知漏洞。
- 日志审计与监控:启用日志记录,监控异常访问行为(如频繁访问
/env
端点)。
六、防护建议
- 最小化暴露原则:仅启用必要的 Actuator 端点(如
/health
、/metrics
),避免暴露敏感信息。- 定期安全测试:使用工具(如 OWASP ZAP)扫描 Actuator 端点,检测未授权访问风险。
- 代码审查与培训:审查配置文件,确保无硬编码凭证或不安全配置;对开发人员进行安全培训,提高安全意识。
- 应急响应机制:一旦发现漏洞利用行为,立即隔离受影响系统,修复漏洞并通知相关方。
结语
最有意义的事
是把说过的话变成现实
!!!