Spring boot heapdump获取敏感信息

一、概述微服务是目前较为热门的技术,Spring boot 是 Spring 的一套快速配置脚手架,可以基于Spring boot 快速开发单个微服务,微服务的特点决定了功能模块分布式部署,在不同的机器上相互通过服务调用进行交互,业务流会经过多个微服务的处理和传递 。
多个微服务下,微服务的监控显得尤为重要 。Actuator组件为Spring Boot提供对应用系统的监控和管理的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的Spring beans信息、系统环境变量的配置信以及Web请求的详细信息等 。
? 如果Actuator使用不当或者一些不经意的疏忽,可能造成信息泄露等严重的安全隐患 。/heapdump作为Actuator组件最为危险的Web接口,如Actuator配置不当,攻击者可无鉴权获取heapdump堆转储文件,分析heapdump堆转储文件进一步获取敏感信息 。
? Actuator 用来对应用系统进行自省和监控的功能模块,其提供的执行器端点分为两类:
? 1.原生端点
? 2.用户自定义扩展端点
? 原生端点主要有:
HTTP 方法
路径
描述
GET
/dump
获取当前应用的所有线程dump情况 。当出现内存占用过高等情况下,可以帮助分析线程的使用情况,帮助定位问题 。
GET
/heapdump
堆转储文件
GET
/env
获取全部环境属性
GET
【Spring boot heapdump获取敏感信息】/env/{name}
根据名称获取特定的环境属性值
GET
/autoconfig
提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过
GET
/configprops
描述配置属性(包含默认值)如何注入 Bean
GET
/beans
描述应用程序上下文里全部的 Bean,以及它们的关系
GET
/health
报告应用程序的健康指标,这些值由 HealthIndicator 的实现类提供
GET
/info
获取应用程序的定制信息,这些信息由 info 打头的属性提供
GET
/mAppings
描述全部的 URI 路径,以及它们和控制器(包含 Actuator 端点)的映射关系
GET
/metrics
报告各种应用程序度量信息,比如内存用量和 HTTP 请求计数
GET
/metrics/{name}
报告指定名称的应用程序度量值
POST
/shutdown
关闭应用程序,要求
endpoints.shutdown.enabled 设置为 true(默认为 false)
GET
/trace
提供基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等)
搭建漏洞复现环境:

Spring boot heapdump获取敏感信息

文章插图
 
二、Actuator配置不当
【→所有资源关注我,私信回复“资料”获取←】
1、网络安全学习路线
2、电子书籍(白帽子)
3、安全大厂内部视频
4、100份src文档
5、常见安全面试题
6、ctf大赛经典题目解析
7、全套工具包
8、应急响应笔记
/heapdump作为Actuator组件最为危险的Web接口之一,如Actuator配置不当,攻击者可无鉴权获取heapdump堆转储文件,分析heapdump堆转储文件进一步获取敏感信息 。其中 /dump 可获取线程活动的快照, /heapdump 可获取堆转储文件 。
? 堆转储文件,是JAVA进程在某个时间点上的内存快照 。HeapDump记录有JVM中堆内存运行的情况,含Java对象、类以及线程栈以及本地变量等信息 。
? 通过访问/dump 路径,返回线程活动的快照,可看到Springboot线程活动中存在RMI 监听 。
访问/dump 路径,效果如下图所示:
Spring boot heapdump获取敏感信息

文章插图
 
通过访问/heapdump 路径,返回 hprof 堆转储文件压缩包 。在JVisualVM 打开该堆转储文件.hprof ,将泄露站点内存信息,比如后台用户的账号密码 。
访问/heapdump 路径,效果如下图所示:
Spring boot heapdump获取敏感信息

文章插图
 
三、识别版本Springboot heapdump端点存在版本差异
? Spring boot 1.x版本,默认端点为/heapdump,下载的heapdump文件包含时间以及后缀hprof 。
? Spring boot 2.x版本,默认端点为/Actuator/heapdump,需要将下载的heapdump文件加上.hprof后缀 。
Spring boot heapdump获取敏感信息

文章插图
 
四、工具选择分析堆转储文件工具有几个选择
? JVisualVM:JDK自带工具,供开发者用于监视,故障排除 。
Spring boot heapdump获取敏感信息


推荐阅读