一、spring boot
日常测试或攻防演练中像shiro,fastjson等漏洞已经越来越少了,但是随着spring boot框架的广泛使用,spring boot带来的安全问题也越来越多,本文仅介绍未授权现在heapdump获取数据库口令,达到连接数据库的目的。其他spring boot安全漏洞请参考https://xz.aliyun.com/t/7811
Heap Dump也叫堆转储文件,是一个Java进程在某个时间点上的内存快照。Heap Dump是有着多种类型的。不过总体上heap dump在触发快照的时候都保存了java对象和类的信息。通常在写heap dump文件前会触发一次FullGC,所以heap dump文件中保存的是FullGC后留下的对象信息。具体参考:https://blog.csdn.net/hehmxy/article/details/89114116
二、未授权访问
spring boot未授权访问产生的安全问题还是比较严重的,env泄露等问题甚至可造成RCE。
在某次测试过程中扫描目录发现heapdump文件可下载,通过mat工具对heapdump文件进行分析,可获取内存中保存的敏感信息。
三、相关工具及语法
Eclipse Memory Analyzer是一种快速且功能丰富的Java堆分析器,可进行查找内存泄漏并减少内存消耗。
下载链接如下:https://www.eclipse.org/mat/
四、OQL
OQL是用于查询Java堆的类SQL查询语言。OQL允许过滤/选择从Java堆中获取的信息。虽然HAT已经支持预定义的查询,例如“显示类X的所有实例”,但OQL增加了更多的灵活性。OQL基于JavaScript表达式语言。参考链接:https://blog.csdn.net/pange1991/article/details/82023771
五、分析heapdump
将heapdump文件拖入mat,mat对文件进行分析后,点击下图OQL查询敏感信息。
查询语句:select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))
点击红色叹号进行查询,即可查询password字段
查询结果如下
由此得知数据库口令,若服务端无外联限制情况下,即可进行数据库登录操作。
文章比较水,但这也是现在发现过得比较值得重视的问题,欢迎表哥们交流思路。