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端点的监控:

Spring

       (三)如果采用的springsecurity,在拦截这里放行了/actuator相关的资源:

Spring

如果是其他拦截或者过滤的可以看看是否进行了有效的拦截过滤。

三、测试访问

(一)​​http://127.0.0.1:8088/actuator/​​ 查看泄露的端点信息

Spring

(二)127.0.0.1:8088/actuator/heapdump 下载heapdump文件,泄露JAVA堆dump信息:

Spring

四、查看HeapDump文件中保存的密码

(一)有多种方式可以查看HeapDump文件,常见的如Memory Analyzer工具以及在安装了JDK6U7及以上版本会自动安装的Java VisualVM工具,这里使用Java VisualVM,路径在jdk1.8.0_271\\bin目录,找到jvisualvm.exe打开Java VisualVM:

Spring

相关手册:

​https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/intro.html​

(二)通过Java VisualVM打开刚下载到的HeapDump文件:

Spring

(三)载入后打开QOL控制台:

Spring

在查询编辑器输入查询语句,然后点击执行:

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())

Spring

或者:

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

Spring

通过上述步骤找到密码。

以上是关于Spring Actuator信息泄露HeapDump的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot Actuator 整合 Prometheus

Spring Boot Actuator

Spring Boot中使用Actuator的/info端点输出Git版本信息

Spring Actuator 端点给出 404 错误,除了健康和信息

Spring boot actuator 将跟踪端点信息写入文件

Spring Boot Actuator 监控实践