您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

Spring boot heapdump获取敏感信息

时间:2022-03-15 11:03:38  来源:  作者:IT野涵

一、概述

微服务是目前较为热门的技术,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

/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获取敏感信息

 

Eclipse MAT:Eclipse提供的一款Heap Dump分析工具,如使用Eclipse-UI内存崩溃,可使用MAT脚本解析大容量的heap dump。

Spring boot heapdump获取敏感信息

 

IBM Heap Analyzer:IBM公司一款分析Heap Dump信息的工具,有效的列举堆的内存使用状况,帮助分析Java内存泄漏的原因。

Spring boot heapdump获取敏感信息

 

五、OQL查询语言

因为堆转储文件里面含有大量信息,要准确找到我们想要的信息需要借助一些工具和一些查询技巧。

​ Springboot OQL 对象查询语言是一种结构化查询语言,将类当作表、对象当作记录行、成员变量当作表中的字段。通过OQL可以方便快捷的查询一些需要的信息,加快检出需要的属性值。

版本差异

​ Spring boot 1.x 版本 heapdump 查询结果存储在 java.util.Hashtable$Entry 实例键值对中:

​ Spring boot 2.x 版本 heapdump 查询结果存储在 java.util.LinkedHashMap$Entry 实例键值对中:

​ 利用password关键字检索,对应的 oql 查询语句

Spring boot heapdump获取敏感信息

 

Eclipse MAT对应查询语句

​ Spring boot 1.x:select * from java.util.Hashtable$Entry s WHERE (toString(s.key).contAIns("password"))

​ Spring boot 2.x:select * from java.util.LinkedHashMap$Entry s WHERE (toString(s.key).contains("password"))

六、具体步骤

此次使用JDK自带JVisualVM工具,对Heap Dump进行分析,该工具位于<JDK_HOME>/bin/目录。

JDK自带工具,如下图所示:

Spring boot heapdump获取敏感信息

 

双击打开JVisualVM工具。

其主界面,如下图所示:

 

​ 通过JVisualVM加载heapdump文件,在概要栏目系统属性处,可看到部分敏感信息泄露。

部分敏感信息泄露,如下图所示:

Spring boot heapdump获取敏感信息

 

切换至OQL控制台标签,在输入框输入如下语句,点击执行进行查询。

select s.value.toString() from java.util.Hashtable$Entry s where /password/.test(s.key.toString())

查询结果,如下图所示:

Spring boot heapdump获取敏感信息

 

切换至类标签,在下方输入框限制检索条件java.util.Hashtable,点击结果中第一项java.util.Hashtable$Entry

查询结果,如下图所示:

Spring boot heapdump获取敏感信息

 

切换不同的实例进行观察,在第411项实例发现后台管理员密码明文。

管理员密码明文,效果如下图所示:

Spring boot heapdump获取敏感信息

 

在第409项实例中进一步可看到 MySQL数据库密码。

查看MySQL数据库密码,效果如下图所示:

Spring boot heapdump获取敏感信息

 

在查找密码上,可结合网站 /env 或 /Actuator/env 接口,检索 关键词,使用被星号 遮掩对应的属性名作为OQL过滤条件。

查看遮挡属性值,效果如下图所示:

Spring boot heapdump获取敏感信息

 

shiroKey

​ 如目标网站使用Shiro安全框架,在过滤规则输⼊
org.Apache.shiro.web.mgt.CookieRememberMeManager 寻找 decryptionCipherKey字段,可获取key,进而rememberMe反序列化利用。

七、防控措施

在代码白盒审计时,对Springboot项目重点检测Actuator依赖,对安全依赖及配置进行复查,建议作为漏洞检出规则加入代码扫描器。

​ 在网络安全风险自查中,将/heapdump 等敏感路径加入扫描器字典。

Spring boot heapdump获取敏感信息

 

在使用Actuator时,不正确的使用或不经意的疏忽,都会造成严重的信息泄露等安全隐患。安全的做法是引入security依赖,打开安全限制并进行身份验证。同时设置单独的Actuator管理端口并配置不对外网开放。

Spring boot heapdump获取敏感信息

 

引入 security 依赖,打开安全限制,或禁用不需要接口,endpoints.env.enabled= false

Spring boot heapdump获取敏感信息

 



Tags:Spring boot   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Spring Boot2.0深度实践 核心原理拆解+源码分析
Spring Boot2.0深度实践:核心原理拆解与源码分析一、引言Spring Boot是一个基于Java的轻量级框架,它简化了Spring应用程序的创建过程,使得开发者能够快速搭建一个可运行的应用...【详细内容】
2024-01-15  Search: Spring boot  点击:(98)  评论:(0)  加入收藏
Spring Boot 3.0是什么?
Spring Boot 3.0是一款基于Java的开源框架,用于简化Spring应用程序的构建和开发过程。与之前的版本相比,Spring Boot 3.0在多个方面进行了改进和增强,使其更加易用、高效和灵活...【详细内容】
2024-01-11  Search: Spring boot  点击:(137)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11  Search: Spring boot  点击:(128)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  Search: Spring boot  点击:(127)  评论:(0)  加入收藏
Spring Boot Starter的原理
Spring Boot Starter 是 Spring Boot 框架的特性之一,用于简化应用程序的依赖管理和配置。1. 概述: - Spring Boot Starter 是一种包含了一组特定功能和依赖关系的依赖项,旨在...【详细内容】
2024-01-05  Search: Spring boot  点击:(96)  评论:(0)  加入收藏
Spring Boot 统一响应体处理器详解
在Spring Boot应用中,统一处理响应体是一项非常重要的任务,它可以让我们更方便地统一规范API的返回格式。今天,我们将深入探讨一个优雅的解决方案&mdash;&mdash;使用ResultHand...【详细内容】
2023-11-30  Search: Spring boot  点击:(153)  评论:(0)  加入收藏
Spring Boot 调优内嵌 Tomcat 的三种方法
在 Spring Boot 中优化 Apache Tomcat 有三种方式,以便实现更好的性能和资源利用率。 线程池(连接器和执行器)设置 使用 NIO 或 APR 连接器 JVM优化线程池设置在 Spring Boot...【详细内容】
2023-11-23  Search: Spring boot  点击:(229)  评论:(0)  加入收藏
一文搞懂Spring Boot控制器的关键要点
Spring Boot 应用程序中的控制器扮演着重要角色,负责处理传入的 HTTP 请求并确定应发送的适当响应。本文深入介绍 Spring Boot 中的控制器,包括如何创建控制器、处理各种类型...【详细内容】
2023-11-20  Search: Spring boot  点击:(152)  评论:(0)  加入收藏
Spring Boot中实现订单30分钟自动取消的策略思路及源代码
方式一:使用定时任务 首先,创建一个定时任务,比如每30分钟执行一次检查订单是否需要取消的逻辑。 在订单生成的时候,保存一条记录到数据库,标记订单的状态为"待处理"。 在定时任...【详细内容】
2023-11-20  Search: Spring boot  点击:(223)  评论:(0)  加入收藏
Spring Boot + Vue3 前后端分离 实战wiki知识库系统
下栽の地止:https://www.itwangzi.cn/2508.html Spring Boot + Vue3 前后端分离 实战wiki知识库系统在当今的Web应用开发中,前后端分离已经成为了一种主流的开发模式。Spring...【详细内容】
2023-11-18  Search: Spring boot  点击:(145)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(6)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(16)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(12)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(15)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(8)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(38)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(21)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(121)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(128)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(127)  评论:(0)  加入收藏
站内最新
站内热门
站内头条