spring boot -- 如何在jvm堆信息中查找明文密碼


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端點修改屬性,會破壞原有屬性,影響網站系統正常使用


完結!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM