如何獲取 Spring heapdump 中的密碼明文
Actuator是Spring Boot提供的應(yīng)用系統(tǒng)監(jiān)控的開源框架。在攻防場景里經(jīng)常會(huì)遇到Actuator配置不當(dāng)?shù)那闆r,攻擊者可以直接下載heapdump堆轉(zhuǎn)儲(chǔ)文件,然后通過一些工具來分析heapdump文件,從而可進(jìn)一步獲取敏感信息。
1.jvisualvm分析
jvisualvm是jdk自帶可視化java監(jiān)控工具,在cmd命令行直接輸入jvisualvm就可以運(yùn)行這款工具。
(1)通過jvisualvm加載heapdump文件
(2)切換到OQL控制臺(tái)標(biāo)簽,Springboot heapdump端點(diǎn)存在版本差異,構(gòu)建OQL語句進(jìn)行關(guān)鍵字查詢,從而獲取明文密碼。
Spring boot 1.x版本:select s.value.toString() from java.util.Hashtable$Entry s where /password/.test(s.key.toString())
Spring boot 2.x版本:select s.value.toString() from java.util.LinkedHashMap$Entry s where /password/.test(s.key.toString())
2.jhat命令分析
jhat 是jdk自帶的用于分析JVM heapdump文件的工具。
(1)使用jhat命令分析heapdump文件,啟動(dòng)一個(gè)端口為7000的http服務(wù)。備注:jhat 后面可配置jvm參數(shù),避免heapdump文件占用過大內(nèi)存。
(2)訪問http服務(wù),搜索關(guān)鍵字進(jìn)入依次查看對(duì)象,獲取到redis數(shù)據(jù)對(duì)象。
(3)點(diǎn)擊password,從而獲取到redis對(duì)象的明文密碼。
3.heapdump_tool 敏感信息查詢工具
本質(zhì)上是基于jhat,通過通過jhat解析heapdump文件,從而實(shí)現(xiàn)heapdump敏感信息搜索。
下載地址:
https://toolaffix.oss-cn-beijing.aliyuncs.com/heapdump_tool.jar
4.Eclipse Memory Analyzer(MAT)
Eclipse Memory Analyzer(簡稱MAT)是一個(gè)功能豐富且操作簡單的JVM Heap Dump分析工具,可以用來查找 spring heapdump中的密碼明文。
下載地址:
https://www.eclipse.org/mat/downloads.php
(1)使用 MAT直接打開下載的 heapdump 文件,點(diǎn)擊 OQL 標(biāo)簽,構(gòu)建語句進(jìn)行關(guān)鍵字查詢。
Spring boot 1.x版本:select from java.util.Hashtable$Entry x WHERE (toString(x.key).contains(“password”))
Spring boot 2.x版本:select from java.util.LinkedHashMap$Entry x WHERE (toString(x.key).contains(“password”))
(2)在 java.util.LinkedHashMap$Entry 實(shí)例的鍵值對(duì)中,找到明文密碼。