Spring Actuator信息泄露HeapDump
Posted 土豆Hero
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Actuator信息泄露HeapDump相关的知识,希望对你有一定的参考价值。
一、说明
HeapDump文件是JVM虚拟机运行时内存的一个快照,通常用于性能分析等,但是因为其保存了对象、类等相关的信息,如果被泄露也会造成信息泄露。有多种方式可以获取到HeapDump信息,如使用jmap、jconsole可以主动获取到信息,在JAVA开发中引入Spring Actuator后,如果配置不当可以通过前台访问下载HeapDump文件,从而导致信息泄露。
二、配置
(一)如下在POM.XML文件中引入的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
(二)在application.properties或者application.yml文件中开启heapdump端点的监控:
(三)如果采用的springsecurity,在拦截这里放行了/actuator相关的资源:
如果是其他拦截或者过滤的可以看看是否进行了有效的拦截过滤。
三、测试访问
(一)http://127.0.0.1:8088/actuator/ 查看泄露的端点信息
(二)127.0.0.1:8088/actuator/heapdump 下载heapdump文件,泄露JAVA堆dump信息:
四、查看HeapDump文件中保存的密码
(一)有多种方式可以查看HeapDump文件,常见的如Memory Analyzer工具以及在安装了JDK6U7及以上版本会自动安装的Java VisualVM工具,这里使用Java VisualVM,路径在jdk1.8.0_271\\bin目录,找到jvisualvm.exe打开Java VisualVM:
相关手册:
https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/intro.html
(二)通过Java VisualVM打开刚下载到的HeapDump文件:
(三)载入后打开QOL控制台:
在查询编辑器输入查询语句,然后点击执行:
select s from java.lang.String s where /pass/.test(s.value.toString())
或者:
select s.value.toString() from java.lang.String s where /pass/.test(s.value.toString())
或者:
select s.value.toString() from java.util.Hashtable$Entry s where /password/.test(s.key.toString())
通过上述步骤找到密码。
以上是关于Spring Actuator信息泄露HeapDump的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot Actuator 整合 Prometheus
Spring Boot中使用Actuator的/info端点输出Git版本信息
Spring Actuator 端点给出 404 错误,除了健康和信息