漏洞原因

默认情况下,Spring Boot Actuator 的大多数端点是启用的(除了一些敏感端点,如 /shutdown)。

Actuator 提供了许多内置的端点,以下是一些常用的:

  • /health:应用健康状况
  • /info:应用信息
  • /metrics:应用度量指标
  • /env:环境属性
  • /configprops:配置属性
  • /mappings:@RequestMapping 映射关系
  • /beans:Spring 容器中的 Bean
  • /threaddump:线程状态信息
  • /shutdown:关闭应用(默认禁用)
  • /heapdump: 获取并下载当前内存快照

    此次重点就是/heapdump端点

漏洞详情

漏洞地址: 后端服务ip/actuator/heapdump
如:http://8.8.8.8/actuator/heapdump
访问该地址会下载一个内存快照文件heapdump
使用MAT打开open head dump选择刚下载的文件
打开“Histogram”视图,在上方的搜索了中搜索com.alibaba.cloud.nacos.client.NacosPropertySource 从nacos获取到的所以配置文件都在这个类里面,选择一个NacosPropertySource实例。右键点击并选择“List Objects” -> “with outgoing references”来查看它们引用的对象。

路径如下,逐层点开即可:
NacosPropertySource -> source -> table
如果没有table属性,则证明此类为空 换一个实例点开
table数组里就是所有的配置,key是配置名,value是配置值

漏洞修复

在配置文件中添加:

1
2
3
management:
endpoints:
enabled-by-default: false

它的作用是全局禁用所有 Spring Boot Actuator 端点。
如果你想启用某个特定的端点,参考:

1
2
3
4
5
6
7
8
9
10
11
management:
endpoints:
enabled-by-default: false
web:
exposure:
include: health,info
endpoint:
health:
enabled: true
info:
enabled: true

这样只有 health 和 info 端点会被启用和暴露。