Java反序列化 漏洞詳解
在最近幾年間,不斷的有java反序列化漏洞被曝光。最近的幾次分別產生於spring框架以及Groovy還有文件上傳的java庫中,這些漏洞均得到了修復。
但在最近的研究中,安全人員發現java反序列漏洞遠遠不止上述幾處,該漏洞廣泛的存在於java庫中。
Java反序列化漏洞:
1. 漏洞產生原因:
在java編寫的web應用與web伺服器間java通常會發送大量的序列化對象例如以下場景:
HTTP請求中的參數,cookies以及Parameters。
RMI協議,被廣泛使用的RMI協議完全基於序列化
JMX 同樣用於處理序列化對象
自定義協議 用來接收與發送原始的java對象
在序列化過程中會使用ObjectOutputStream類的writeObject方法,在接收數據後一般又會採用ObjectInputStream類的readObject方法進行反序列化讀取數據。其代碼示例如下:
結果如圖:
上述代碼中的java類ObjectInputStream在執行反序列化時並不會對自身的輸入進行檢查,意味著一種可能性,即惡意攻擊者構建特定的輸入,在ObjectInputStream類反序列化之後會產生非正常結果。而根據最新的研究,利用這一方法可以實現遠程執行任意代碼。
為了進一步說明,可以針對對上述代碼進行了一點修改:
結果:
主要修改為自定義了一個被序列化的對象myobject,通過定義myobject實現了java序列化的介面並且定義了一種名為「readObject」的方法。通過對比上面例子的輸出,可以發現反序列化的相關數值被修改了,即執行的用戶自身的代碼。造成結果不同的關鍵在於readObject方法,java在讀取序列化對象的時候會先查找用戶自定義的readObject是否存在,如果存在則執行用戶自定義的方法。
2 漏洞觸發點尋找:
在之前的論述中可以發現利用該漏洞首先應找出readObject方法調用,在找到之後進行下一步的注入操作。一般可以通過以下方法進行查找:
(1)針對特定的java應用,對此漏洞的應用應首先尋找可以利用的「靶點」,即確定調用反序列化函數的地點。這可以通過對java應用進行源碼審計,例如找尋反序列化函數readObject調用情況。
(2)對於該應用的網路行為進行抓包,尋找序列化數據(在包數據中,序列化數據一般會以ac ed 00 05開頭)來進行判斷。
3.漏洞利用
在發現序列化數據之後,需要產生一個用於測試的pyload。這裡可以在github上下載一個工具「ysoserial」並執行下列指令:
當/ tmp / pwned文件被創建時說明測試已經開始,而後續的步驟將結合實例一起分析。
漏洞利用實例:
這裡以Jboss為例,Jboss利用的是HTTP協議,可以在任何埠上運行,默認安裝在8080埠中。而且Jboss與「JMXInvokerServlet」的通信過程中存在一個公開漏洞。JMX是一個java的管理協議,在Jboss中的JMXInvokerServlet可以使用HTTP協議與其進行通話。這一通信功能依賴於java的序列化類。
在默認安裝的Jboss中,JMXInvokerServlet的路徑恰好為http://localhost:8080/invoker/JMXInvokerServlet。如果用戶訪問一個web瀏覽器,實際上會返回一個原始的java對象,這中行為顯然存在一個漏洞。
這個漏洞可以很經常的通過互聯網被利用,由於jmxinvokerservlet與主要的Web應用程序在同一個埠上運行,因此它很少被防火牆所攔截。
基於以上原理可以通過以下指令收集jar文件來測試該漏洞是否可用:
由此可以以jmx作為Jboss接受外部輸入的點,可以利用java HTTP client包構建POST請求,post請求包中數據為使用ysoserial處理之後的構建代碼。
※想學java還不知道 這些怎麼行?
※Java的標準,規範-介面-interface
※Java操作Excel表格的 一種方法Java教程
※深入理解Java虛擬機
※Java學習 哪個更快:Java堆還是本地內存
TAG:java學習吧 |
※stringr包詳解
※async/await使用深入詳解
※Windows窗體數據抓取詳解
※Summary 數據類型詳解
※詳解TogetherJS
※Spectre 攻擊詳解
※IntelliJ遠程調試詳解
※詳解glide中crossfade引發的默認圖變形
※WebExtension安全漏洞詳解 Part 1
※OpenStack之Magnum容器編服務排引擎詳解
※ThreadLocal實現原理詳解
※詳解Siamese網路
※.gitignore詳解及編寫
※可視化CapsNet,詳解Hinton等人提出的膠囊概念與原理
※linux進程信息查詢命令lsof詳解
※HashMap詳解
※vivo X20 Plus 屏幕指紋版全方位詳解
※Artifact刀牌現場試玩套牌詳解
※eBay運營之best match規則詳解
※提升Windows系統性能全面優化詳解