一、spring boot
日常測試或攻防演練中像shiro,fastjson等漏洞已經越來越少了,但是隨着spring boot框架的廣泛使用,spring boot帶來的安全問題也越來越多,本文僅介紹未授權現在heapdump獲取數據庫口令,達到連接數據庫的目的。其他spring boot安全漏洞請參考https://xz.aliyun.com/t/7811
Heap Dump也叫堆轉儲文件,是一個Java進程在某個時間點上的內存快照。Heap Dump是有着多種類型的。不過總體上heap dump在觸發快照的時候都保存了java對象和類的信息。通常在寫heap dump文件前會觸發一次FullGC,所以heap dump文件中保存的是FullGC后留下的對象信息。具體參考:https://blog.csdn.net/hehmxy/article/details/89114116
二、未授權訪問
spring boot未授權訪問產生的安全問題還是比較嚴重的,env泄露等問題甚至可造成RCE。
在某次測試過程中掃描目錄發現heapdump文件可下載,通過mat工具對heapdump文件進行分析,可獲取內存中保存的敏感信息。
三、相關工具及語法
Eclipse Memory Analyzer是一種快速且功能豐富的Java堆分析器,可進行查找內存泄漏並減少內存消耗。
下載鏈接如下:https://www.eclipse.org/mat/
四、OQL
OQL是用於查詢Java堆的類SQL查詢語言。OQL允許過濾/選擇從Java堆中獲取的信息。雖然HAT已經支持預定義的查詢,例如“顯示類X的所有實例”,但OQL增加了更多的靈活性。OQL基於JavaScript表達式語言。參考鏈接:https://blog.csdn.net/pange1991/article/details/82023771
五、分析heapdump
將heapdump文件拖入mat,mat對文件進行分析后,點擊下圖OQL查詢敏感信息。
查詢語句:select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))
點擊紅色嘆號進行查詢,即可查詢password字段
查詢結果如下
由此得知數據庫口令,若服務端無外聯限制情況下,即可進行數據庫登錄操作。
文章比較水,但這也是現在發現過得比較值得重視的問題,歡迎表哥們交流思路。