内存快照泄露NACOS配置文件
漏洞原因
默认情况下,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 | management: |
它的作用是全局禁用所有 Spring Boot Actuator 端点。
如果你想启用某个特定的端点,参考:
1 | management: |
这样只有 health 和 info 端点会被启用和暴露。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Rui的博客!
评论