准备工作
首先要获取heapdump。从http://www.xx.com/heapdump获取调用栈相关信息,如果是 sping boot 2.x 的话路径就是:http://www.xx.com/actuator/heapdump

然后下载 Eclipse Memory Analyzer 工具来分析 /heapdump 或 /actuator/heapdump 接口下载的 jvm heap 信息,查找密码明文或者其他敏感信息。
使用 Eclipse Memory Analyzer 是无法直接打开下载的 heapdump 文件的,需要改后缀为 .hprof

更改后缀之后就可以成功打开了

还有个注意事项是,内存如果解压出来,比如当前我解压出来 1.46G ,那么在 MemoryAnalyzer.ini 这个文件当中需要将内存设置为大于这个大小,我设置为 2G ,否则会报错。我的文件没那么大,所以就不需要修改了。

搜索敏感信息
点击 OQL 标签,在查询框中输入语句进行查询
1 | select * from org.springframework.web.context.support.StandardServletEnvironment |
然后点击红色感叹号执行查询。

也可以定位关键词进行查询
1 | select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("user")) or (toString(x.key).contains("pass")) |

拓展一下也可以直接搜accessKey
1 | select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("accessKey")) |
我这个里面没有。。。

借一张xray社区的图


wx,app等等。。。都可以搜
还有一种查看方式就是通过 Top Consumers

然后根据包的结构去查看自己感兴趣的东西,比如我此处的 druid

比如此处就能看到一台sqlserver的连接信息(ip,账号,密码)。
