Spring Boot Actuator未授权访问排查和整改指南
Actuator 是 SpringBoot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。然而,其默认配置会出现接口未授权访问,导致部分接口会泄露网站数据库连接信息等配置信息,使用Jolokia库特性甚至可以远程执行任意代码,获取服务器权限。
二、漏洞危害
1、信息泄露:未授权的访问者可以通过Actuator端点获取敏感信息,如应用程序的配置信息、运行时环境、日志内容等。这些信息可以被攻击者用于识别系统的弱点,并进行更深入的攻击。
2、系统破坏:攻击者可以通过Actuator端点的未授权访问,执行恶意操作,如修改配置、篡改数据、重启应用程序、关闭数据库连接等,从而破坏应用程序的正常运行。
3、命令执行:当系统使用Jolokia库特性甚至可以远程执行任意代码,获取服务器权限。
三、漏洞等级
风险等级:高危。
影响范围:所有版本且无安全配置的系统。
潜在影响:敏感数据暴露、系统配置被篡改、命令执行导致服务器沦陷。
四、Actuator未授权访问认定标准(重要)
五、漏洞通报案例(重要)
确系为重要域名或业务,可导致系统敏感信息泄露;
确系为重要域名或业务,可导致远程命令执行。
六、常见的Actuator未授权配置
以下是一些常见的Actuator未授权配置问题:
1、缺乏身份验证和授权:默认情况下,Actuator可能未配置任何身份验证和授权机制,导致任何用户都可以访问端点。
management:
security:
enabled: false
2、使用默认的敏感端点路径:默认情况下,Actuator的一些敏感端点路径(如/actuator/shutdown、/actuator/env)可能对未授权用户开放。
management:
endpoints:
web:
exposure:
include: "*"
3、配置IP过滤错误:如果IP过滤配置不正确,可能允许来自未授权IP地址的访问。
management:
endpoints:
web:
base-path: /actuator
exposure:
include: "*"
security:
ip-restrictions:
enabled: true
remote-addresses: 0.0.0.0/0
4、未隐藏敏感端点:Actuator提供了一些敏感端点(如/actuator/mappings、/actuator/trace),可能会暴露过多的系统信息。
management:
endpoints:
web:
exposure:
include: "*"
sensitive: false
springboot actuator未授权访问漏洞的利用大致有:路由地址及接口调用详情泄漏、获取被星号脱敏的密码的明文、远程代码执行。
具体利用方式,可参考
SpringBootVulExploit(GitHub - LandGrey/SpringBootVulExploit: SpringBoot 相关漏洞学习资料,利用方法和技巧合集,黑盒安全评估 check list)
八、整改要求(重要)
以下是针对Spring Boot Actuator未授权访问漏洞的建议措施:
1、禁用所有接口,将配置改成:
endpoints.enabled = false
2、引入依赖:
spring-boot-starter-security
3、开启security功能,配置访问权限验证,类似配置如下:
management.port=8099
management.security.enabled=true
security.user.name=xxxxx
security.user.password=xxxxx
4、配置过滤器:通过配置Web安全过滤器,限制对Actuator端点的访问,仅允许受信任的IP地址或子网进行访问。
5、禁用敏感端点:根据实际需求,禁用或限制不需要的Actuator端点,避免将过多敏感信息暴露给未授权访问者。
6、定制端点路径:通过配置自定义的端点路径,避免使用默认的端点路径,从而降低被自动化扫描工具或攻击者发现的可能性。
7、日志和监控:定期监控和审计Actuator端点的访问日志,及时发现异常访问,并采取适当的响应措施。