1. 项目概述:一次典型的Spring Boot Actuator端点暴露漏洞排查
最近在项目安全扫描中,一个关于Gateway网关的“中危漏洞”告警引起了我的注意。告警描述非常具体:通过访问 ip:9090/actuator/env 可以直接获取到应用的完整环境变量、配置信息;而访问 ip:9090/actuator/heapdump 则可以直接下载JVM的堆内存转储文件。这听起来像是内部监控接口被暴露在了公网或内网不安全的环境中。对于任何一个稍有安全意识的开发者或运维来说,这都像是在服务器上开了一扇不设防的后门。这个漏洞的根源,在于Spring Boot Actuator这个强大的监控管理模块,在默认或不当配置下,其敏感端点(Endpoint)没有受到应有的访问控制。
Spring Boot Actuator本身不是漏洞,它是一个极其有用的生产就绪特性,为应用提供了丰富的健康检查、审计、指标收集和监控能力。 /env 端点用于展示应用的所有环境属性,包括数据库密码、API密钥等敏感配置; /heapdump 端点则能生成当前JVM的堆转储文件,这个文件包含了内存中所有对象的快照,通过专业工具(如Eclipse MAT)分析,可能泄露会话信息、加密密钥、业务数据等核心机密。在开发或测试环境,为了方便调试,我们可能会临时开放这些端点。但一旦部署到准生产或生产环境,如果忘记关闭或未正确配置安全策略,这些端点就会成为攻击者绝佳的信息收集入口,为后续的垂直越权、代码执行等攻击铺平道路。这次排查,就是一次标准的“安全左移”实践,在漏洞被真正利用前,将其修复。
2. 漏洞原理与风险深度解析
2.1 Actuator端点工作机制与暴露风险
Spring Boot Actuator通过一系列HTTP或JMX端点(Endpoints)来暴露应用内部信息。在Spring Boot 2.x中,端点默认通过Web方式暴露的路径是 /actuator/{端点名} 。每个端点都有其特定的用途和敏感级别。以本次涉及的两个端点为例:
-
/env(Environment端点) :该端点会聚合并展示应用程序所有的属性来源,这包括但不限于:- 操作系统环境变量 :如
PATH,JAVA_HOME,甚至可能包含自定义的密钥环境变量。 - 应用的
application.properties或application.yml配置文件 :明文展示所有配置项。 - 命令行参数 :启动JVM时传入的参数。
- 各种PropertySource :如来自配置中心(Nacos, Apollo)的配置。 这意味着,如果数据库连接字符串
spring.datasource.url、密码spring.datasource.password,Redis密码spring.redis.password,或第三方服务的API密钥等敏感信息直接写在配置文件中,攻击者通过访问/actuator/env就能一览无余,实现“配置泄露”。
- 操作系统环境变量 :如
-
/heapdump(Heap Dump端点) :该端点会触发一次完整的JVM堆内存快照,并返回一个.hprof文件。这个文件是诊断内存泄漏、分析对象分布的利器,但在攻击者手中,它变成了一个“内存数据库”。使用内存分析工具加载该文件,可以:- 检索明文密码 :虽然配置中的密码可能被加密,但在应用运行时,解密后的密码对象很可能驻留在内存中。
- 提取会话信息 :找到
HttpSession对象,获取当前活跃用户的会话标识符(Session ID),可能用于会话劫持。 - 反查业务数据 :内存中可能缓存了最近的数据库查询结果、用户敏感信息等。
- 分析内部数据结构 :了解应用内部类、对象关系,辅助构造更精准的攻击载荷。
2.2 漏洞的典型利用场景与危害升级路径
攻击者发现此类漏洞后的利用路径通常是阶梯式的:
- 信息侦察 :首先访问
/actuator根路径,列出所有已暴露的端点。然后访问/actuator/env收集配置信息,寻找数据库、缓存、消息队列的连接信息,以及潜在的硬编码密钥。 - 敏感端点探测 :尝试访问其他敏感端点,如
/actuator/mappings(查看所有控制器映射),/actuator/loggers(动态修改日志级别),/actuator/httptrace(查看最近的HTTP请求跟踪)。 - 堆内存分析 :下载
/actuator/heapdump文件,在本地进行深度分析,目标是提取内存中的敏感数据。 - 横向移动与权限提升 :利用获取到的数据库凭证,直接连接数据库,进行数据窃取或篡改。如果获取到内部系统密钥,可能进一步攻击关联系统。
- 持久化与后门 :在某些旧版本或特定配置下,如果
/actuator/restart或/actuator/shutdown端点也被暴露,攻击者甚至可以直接重启或关闭应用,造成业务中断。
这个漏洞被评为“中危”而非“高危”,通常是因为其本身不直接导致远程代码执行(RCE),但它为RCE创造了极其便利的条件,是攻击链中关键的一环。在SRC(安全应急响应中心)平台或漏洞众测中,这类配置错误导致的信息泄露漏洞是提交量最大的类型之一。
2.3 为什么Gateway网关出现此漏洞更值得警惕?
在微服务架构中,API Gateway(如Spring Cloud Gateway)作为所有外部流量的统一入口,其安全性至关重要。Gateway一旦被攻破,相当于城堡的大门钥匙丢失。Gateway上运行的也是一个Spring Boot应用,它同样可能引入Actuator依赖并暴露端点。更危险的是,由于Gateway通常需要连接下游多个服务,其配置文件中可能集中存放了各个服务的路由规则、负载均衡信息,甚至为了某些功能(如转发时添加头信息)而硬编码了一些通用令牌(Token)。这些信息如果通过 /actuator/env 泄露,攻击者就能清晰地描绘出整个微服务网络的拓扑结构,并获取访问内部服务的“通行证”,危害范围从


2117

被折叠的 条评论
为什么被折叠?



