(驚呆)java反序列化漏洞—被低估的破壞之王
【IT168 資訊】IT168 資訊】近日,2015年最為被低估的,具有巨大破壞力的漏洞浮出水面。在FoxGlove Security安全團隊的@breenmachine 釋出一篇部落格中介紹了該漏洞在最新版的WebLogic、WebSphere、JBoss、Jenkins、OpenNMS中的應用,實現遠端程式碼執行。更為嚴重的是,在漏洞被發現的9個月後依然沒有有效的java庫補丁來針對受到影響的產品進行加固。現在,讓我們探討下該漏洞的原理以及應用。
背景:
java反序列化漏洞
java反序列化漏洞是一類被廣泛應用的漏洞,絕大多數的程式語言都會提供內建方法使使用者可以將自身應用所產生的資料存入硬碟或透過網路傳輸出去。這種將應用資料轉化為其他格式的過程稱之為序列化,而將讀取序列化資料的過程稱之為反序列化。
當應用程式碼從使用者接受序列化資料並試圖反序列化改資料進行下一步處理時會產生反序列化漏洞。該漏洞在不同的語言環境下會導致多種結果,但最有危害性的,也是之後我們即將討論的是遠端程式碼注入。
2.java反序列化漏洞發現歷程
在最近幾年間,不斷的有java反序列化漏洞被曝光。最近的幾次分別產生於spring框架以及Groovy還有檔案上傳的java庫中,這些漏洞均得到了修復。
但在最近的研究中,安全人員發現java反序列漏洞遠遠不止上述幾處,該漏洞廣泛的存在於java庫中。
Java反序列化漏洞:
漏洞產生原因:
在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的路徑恰好為。如果使用者訪問一個web瀏覽器,實際上會返回一個原始的java物件,這中行為顯然存在一個漏洞。
這個漏洞可以很經常的透過網際網路被利用,由於jmxinvokerservlet與主要的Web應用程式在同一個埠上執行,因此它很少被防火牆所攔截。
基於以上原理可以透過以下指令收集jar檔案來測試該漏洞是否可用:
由此可以以jmx作為Jboss接受外部輸入的點,可以利用java HTTP client包構建POST請求,post請求包中資料為使用ysoserial處理之後的構建程式碼。
http://hope.mnwww.com/jkxbw/10364816859.html
http://hope.mnwww.com/zxwz/10364804168.html
首頁 上一頁 共13037條記錄 1/14
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30065054/viewspace-1838894/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 被低估的AVG遊戲遊戲
- 恢復被破壞的 Windows XP 系統檔案Windows
- BIOS被病毒破壞了的解決方法(轉)iOS
- 良心乾貨!如何驚呆你的面試官面試
- Java序列化、反序列化、反序列化漏洞Java
- Filament 被低估的5個特性
- 檔案系統被破壞時的處理方法(轉)
- 控制檔案被破壞的資料庫恢復方法資料庫
- 被低估的騰訊雲資料庫資料庫
- ASML還是被低估了?ASM
- 中國果粉要告蘋果:適用法律驚呆蘋果
- 怎樣保證我的程式碼不會被別人破壞?
- Linux檔案系統被破壞時的處理方法(轉)Linux
- 最被低估的Vscode外掛列表VSCode
- 主機板BIOS被CIH病毒破壞怎麼解決iOS
- 黑客通過利用 ERP 漏洞破壞了 62 所美國大學黑客
- 黑客通過利用ERP漏洞破壞了62所美國大學黑客
- CVE-2010-3971 CSS記憶體破壞漏洞分析CSS記憶體
- Java安全之Cas反序列化漏洞分析Java
- 英雄互娛,一家被低估的遊戲公司遊戲
- Java審計之CMS中的那些反序列化漏洞Java
- java RMI相關反序列化漏洞整合分析Java
- 傳聞:誰控制了前端入口,誰就是IT行業的主宰!看完驚呆前端行業
- 企業授權:SOA被低估的經濟價值
- Java 8預設方法會破壞你的(使用者的)程式碼Java
- 修復weblogic的JAVA反序列化漏洞的多種方法WebJava
- Java序列化技術即將被廢除!!!Java
- 通過WebGoat學習java反序列化漏洞WebGoJava
- Java安全之Shiro 550反序列化漏洞分析Java
- 如何破壞C++的訪問控制C++
- 微軟表示Win10 RedStone(紅石)版要加入讓你“驚呆”的功能微軟Win10
- php反序列化漏洞PHP
- JMX 反序列化漏洞
- JAVA反序列化漏洞完整過程分析與除錯Java除錯
- 一位Javascript程式設計師認為Java被嚴重低估 - jacksonJavaScript程式設計師
- 老外被中國App驚呆了!APP
- 我要偷偷的學Python,然後驚呆所有人(第四天)Python
- 我要偷偷的學Python,然後驚呆所有人(第三天)Python