spring boot -- 如何在jvm堆信息中查找明文密碼
在測試的時候發現網站圖標為小綠葉,確定為Spring boot框架,然后訪問env頁面,會泄露服務器環境變量,服務,賬號密碼等信息。
在泄露的信息處可以看到dbconfig.dbs,數據訪問鏈接等信息,確定為oracle數據庫
username為gzdlpw、但是密碼默認的是使用 * 號替代,然后發現/jolokia、/actuator/jolokia接口是無法訪問的,也無法使用POST方法訪問/env接口,但是存在/heapdump接口,可以下載JVM堆信息
訪問http://xxxxxxx:8018/heapdump、下載JVM堆信息,可在堆信息中找到明文密碼

使用Eclipse Memory Analyzer打開下載的JVM堆文件
點擊OQL輸入搜索語句,點擊紅色嘆號,進行搜索

然后輸入OQL語句:“select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))”,進行搜索
逐個查看KEY的值,只有當KEY的值為我們要找的屬性值時,對應的密碼才為我們需要的密碼
如:KEY的值為“dbconfig.dbs[0].password”、與我們前面在env看到的屬性值相同,即該密碼為數據庫密碼

即:密碼為:gzdl!321
spring boot 1.x版本的密碼存在
java.util.Hashtable$Entry
實例的鍵值對中
spring boot 2.x版本存儲在
java.util.LinkedHashMap$Entry
實例的鍵值對中
1 select * from org.springframework.web.context.support.StandardServletEnvironment 2 select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password")) 3 select * from java.util.LinkedHashMap$Entry x WHERE (toString(x.key).contains("password"))
注:POST訪問env端點修改屬性,會破壞原有屬性,影響網站系統正常使用
完結!!!