banner
毅种循环

毅种循环

头顶铁锅接收宇宙能量

Spring Boot Dump文件轉儲利用

一、spring boot#

在日常测试或攻防演练中,像 shiro、fastjson 等漏洞已经越来越少了,但是随着 spring boot 框架的广泛使用,spring boot 带来的安全问题也越来越多。本文仅介绍未授权访问 heapdump 获取数据库口令,以达到连接数据库的目的。其他 spring boot 安全漏洞请参考https://xz.aliyun.com/t/7811

Heap Dump 也叫堆转储文件,是一个 Java 进程在某个时间点上的内存快照。Heap Dump 有多种类型,但总体上在触发快照时都保存了 java 对象和类的信息。通常在写 heap dump 文件前会触发一次 FullGC,所以 heap dump 文件中保存的是 FullGC 后留下的对象信息。具体参考:https://blog.csdn.net/hehmxy/article/details/89114116

二、未授权访问#

spring boot 未授权访问产生的安全问题还是比较严重的,env 泄露等问题甚至可造成 RCE。
在某次测试过程中,扫描目录发现 heapdump 文件可下载,通过 mat 工具对 heapdump 文件进行分析,可获取内存中保存的敏感信息。

image

访问该文件后即可下载。

image

三、相关工具及语法#

Eclipse Memory Analyzer 是一种快速且功能丰富的 Java 堆分析器,可用于查找内存泄漏并减少内存消耗。下载链接如下:https://www.eclipse.org/mat/

四、OQL#

OQL 是用于查询 Java 堆的类 SQL 查询语言。OQL 允许过滤 / 选择从 Java 堆中获取的信息。虽然 HAT 已经支持预定义的查询,例如 “显示类 X 的所有实例”,但 OQL 增加了更多的灵活性。OQL 基于 JavaScript 表达式语言。

五、分析 heapdump#

将 heapdump 文件拖入 mat,mat 对文件进行分析后,应该是这个样子的。

image

但是要注意一个问题,建议将 dump 文件解压到一个不常用的目录中,否则会分析一堆文件回来。

image

使用 OOL 按钮进行查询。

image

语法:

select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))

或者:

select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("想查询属性所带的关键字"))         //1.x
select * from java.util.LinkedHashMap$Entry x WHERE (toString(x.key).contains("password"))          //2.x

image

即可查询出内存文件中所包含的数据库账号密码,如果 IP 地址运行外联即可利用。

部分 GitHub 工具已经支持运行 shiro key 之类的操作,因此本文细节有限。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。