• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Java反序列化漏洞探析及其修復(fù)方法研究

      2016-11-07 07:25:37徐江珮蔡攸敏
      湖北電力 2016年11期
      關(guān)鍵詞:序列化漏洞應(yīng)用程序

      徐江珮,王 捷,蔡攸敏,劉 暢

      (國網(wǎng)湖北省電力公司電力科學(xué)研究院,湖北 武漢 430077)

      Java反序列化漏洞探析及其修復(fù)方法研究

      徐江珮,王 捷,蔡攸敏,劉 暢

      (國網(wǎng)湖北省電力公司電力科學(xué)研究院,湖北 武漢 430077)

      為避免利用Java反序列化漏洞影響企業(yè)核心業(yè)務(wù)、產(chǎn)生重大信息安全事件,詳細介紹了Java反序列化漏洞的背景、原理、漏洞利用方法及工具,通過一個具體實例給出利用該漏洞進行服務(wù)器主機系統(tǒng)提權(quán)的詳細步驟,并提出了多種漏洞修復(fù)方法。

      Java反序列化漏洞;漏洞利用;信息安全

      0 引言

      Java反序列化漏洞是2015年11月初曝出的一種新型信息安全高危漏洞,存在于Apache Commons Collections等Java公共庫中,其廣泛影響各種基于Java編寫的應(yīng)用程序,被稱為2015年最被低估、具有巨大破壞力的信息安全漏洞之一。通過利用WebLogic、WebSphere、JBoss、Jenkins、OpenNMS等主流中間件和框架的Java反序列化漏洞,攻擊者可以很容易地實現(xiàn)遠程任意代碼執(zhí)行,進而奪取Web服務(wù)器的完全控制權(quán)限,實施各種高危入侵行為。重視并研究Java反序列化漏洞原理、漏洞利用工具和方法,針對該漏洞提出有效可行的修復(fù)方案,對保障電網(wǎng)信息系統(tǒng)的正常穩(wěn)定運行具有重大現(xiàn)實意義。

      1 Java反序列化漏洞概述

      1.1 漏洞背景

      2015年1月28日,國外兩位信息安全研究人員在AppSecCali 2015大會上指出Java反序列化漏洞可以利用常用Java庫Apache Common Collections實現(xiàn)遠程任意代碼執(zhí)行,并提供對應(yīng)漏洞利用工具,但當時并未引起廣泛重視。

      直到2015年11月6日,國外FoxGlove Security安全團隊的一名成員在其一篇文章中詳細介紹了如何利用Java反序列化漏洞攻擊最新版本的WebLogic、WebSphere、JBoss、Jenkins、OpenNMS等主流的基于Ja?va架構(gòu)的中間件和框架,實現(xiàn)遠程任意代碼執(zhí)行、獲取網(wǎng)站服務(wù)器控制權(quán)等嚴重危害行為,該漏洞才引起了安全業(yè)界的廣泛關(guān)注。此后,國內(nèi)外許多知名企業(yè)、公司不斷被曝出因Java反序列化漏洞被獲得Web服務(wù)器控制權(quán)限的重大信息安全事件,使該漏洞一躍成為2015年信息安全領(lǐng)域最熱門話題之一。

      2015年11月16日,國家信息安全漏洞共享平臺(CNVD)收錄Java反序列化漏洞,將其正式命名為Apache Commons Components Invoker Transformer反序列化任意代碼執(zhí)行漏洞,漏洞編號為CNVD-2015-07556,漏洞綜合評級為高危。

      1.2 漏洞產(chǎn)生原理

      Java是一種可以撰寫跨平臺應(yīng)用程序的面向?qū)ο蟪绦蛟O(shè)計語言,具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計算機、移動設(shè)備和互聯(lián)網(wǎng)中。在最新的編程語言排行榜中,Java仍然高居首位,在所有編程語言中占有最高的使用率(20.5%)[1]。在當今全球云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)和移動應(yīng)用產(chǎn)業(yè)快速發(fā)展的環(huán)境下,不斷更新升級的Java技術(shù)展現(xiàn)了卓越的競爭力和愈加廣闊的應(yīng)用前景。

      在Java中,序列化是指將對象轉(zhuǎn)換成字節(jié)流,以便于存儲在內(nèi)存、文件、數(shù)據(jù)庫中或者在網(wǎng)絡(luò)上進行傳送,該處理由ObjectOutputStream類的writeObject()方法實現(xiàn);反序列化是序列化的逆過程,將字節(jié)流還原成Java對象,該處理由ObjectInputStream類的readObject()方法實現(xiàn)[2]。圖1顯示了Java對象從序列化到反序列化的完整處理流程。

      圖1 Java序列化和反序列化示意圖Fig.1 Diagram of Java serialization and deserialization

      Java序列化及反序列化處理在基于Java架構(gòu)的Web應(yīng)用中具有尤為重要的作用。位于網(wǎng)絡(luò)兩端、彼此不共享內(nèi)存信息的兩個Web應(yīng)用在進行遠程通信時,無論相互間發(fā)送何種類型的數(shù)據(jù),在網(wǎng)絡(luò)中實際上都是以二進制序列的形式傳輸?shù)?。為此,發(fā)送方就必須將要發(fā)送的Java對象序列化為字節(jié)流,接收方則需要將字節(jié)流再反序列化還原得到Java對象,才能實現(xiàn)正常通信。

      只要Java應(yīng)用允許對用戶輸入的不可信數(shù)據(jù)進行反序列化處理,那么攻擊者就可以通過構(gòu)造惡意輸入來使反序列產(chǎn)生非預(yù)期的Java對象,在產(chǎn)生過程中就可能帶來任意代碼執(zhí)行問題,這就是Java反序列化漏洞的產(chǎn)生原理。其根源在于:

      (1)ObjectInputStream類在進行反序列化操作時,不會調(diào)用構(gòu)造函數(shù)對生成對象的類型進行任何校驗;

      (2)CommonsCollections組件中對于集合的操作存在可以進行反射調(diào)用的方法。

      正因為Java反序列化漏洞是因Java自身設(shè)計缺陷所致,所以才廣泛存在于各種基于Java開發(fā)的應(yīng)用中。只要Java應(yīng)用的Class Path包含Apache Com?mons Collections的jar包,無論源碼是否使用了Apache Commons Collections中的類,都有可能導(dǎo)致遠程代碼執(zhí)行。

      2 漏洞利用方法及工具

      基于Java反序列化漏洞的原理,要利用該漏洞,首先需要在目標Java應(yīng)用中找到一個接受外部輸入的序列化對象的反序列化接收點??梢酝ㄟ^兩種方式尋找:

      (1)對應(yīng)用源碼中關(guān)于調(diào)用反序列化函數(shù)的部分進行審計;

      (2)對應(yīng)用交互流量進行抓包,查看是否包含以“ac ed 00 05”標記開頭的序列化數(shù)據(jù)。成功找到接收點后,再檢查目標應(yīng)用的Class Path中是否包含Apache Commons Collections庫,如果包含,就可以使用Java反序列化漏洞利用工具生成反序列化pay?load,通過傳入對象方式進行注入,觸發(fā)ObjectInput?Stream的反序列化操作,并通過反射調(diào)用Runtime.getRunTime.exec,實現(xiàn)對漏洞的利用。

      目前幾款常見的Java反序列化漏洞利用工具如表1所示。

      表1 Java反序列化漏洞利用工具Tab.1 Tools of Java deserialization vulnerability exploitation

      ysoserial是由國外人員開發(fā)的最早的Java反序列化漏洞利用工具,運行于命令行窗口;WebLog?ic_EXP是專門針對WebLogic開發(fā)的Java反序列化漏洞利用工具。該工具具有圖形化使用界面,支持本地命令執(zhí)行并回顯,連接目標主機后可通過文件上傳、執(zhí)行CMD語句等方式驗證目標服務(wù)器Web?Logic是否存在Java反序列化漏洞;JBOSS_EXP是專用于JBoss的Java反序列化漏洞利用工具;Java反序列化終極測試工具是集成了JBoss、WebLogic和WebSphere的反序列化漏洞利用工具,支持純內(nèi)網(wǎng)環(huán)境檢測、https數(shù)據(jù)傳輸、文件目錄列表等功能。上述四款工具是目前使用較為普遍的Java反序列化漏洞利用工具。

      3 利用漏洞獲取系統(tǒng)權(quán)限實例

      Weblogic在國內(nèi)的應(yīng)用范圍比較廣,支撐著很多企業(yè)的核心業(yè)務(wù),以下通過一個實例介紹如何探測存在Java反序列化漏洞的WebLogic服務(wù)器,進而利用漏洞獲取服務(wù)器主機系統(tǒng)控制權(quán)限的方法步驟。利用漏洞獲取系統(tǒng)權(quán)限的主要流程如圖2所示。

      圖2 利用漏洞獲取系統(tǒng)權(quán)限流程圖Fig.2 Flow chart of acquiring the privilege of system by vulnerability exploitation

      以圖2為依據(jù),給出主要步驟的詳細描述如下。

      (1)端口掃描

      選擇功能強大的“啊D網(wǎng)絡(luò)工具包”端口掃描工具進行掃描。設(shè)置一段IP地址范圍,端口設(shè)置為WebLogic默認端口7001,如圖3所示。

      圖3 端口掃描Fig.3 Port scanning

      (2)連接測試

      對上一步掃描發(fā)現(xiàn)的所有開放7001端口的IP列表,利用WebLogic_EXP工具逐一驗證是否可連接。經(jīng)過大量手工測試,發(fā)現(xiàn)某一IP的WebLogic服務(wù)器可成功連接,如圖4所示。

      圖4 利用WebLogic_EXP成功連接WebLogic服務(wù)器Fig.4 Successfully connect to WebLogic server by using WebLogic_EXP

      (3)添加用戶

      第一步,在CMD欄輸入“whoami”并點擊Execute執(zhí)行;

      第二步,運行“net localgroup administrators”查看管理員組;

      第三步,運行“net user test test/add”添加一個賬戶名和密碼均為“test”的用戶;

      第四步,再運行“net localgroup administrators test/add”將該用戶加入到管理員組中;

      第五步,再次運行“net localgroup administrators”可見管理員組列表新增了“test”用戶。如圖5所示,表明操作系統(tǒng)用戶創(chuàng)建成功。

      圖5 利用WebLogic_EXP向WebLogic服務(wù)器主機成功添加用戶Fig.5 Successfully add a user to WebLogic server host by using WebLogic_EXP

      (4)遠程連接

      最后,利用上一步創(chuàng)建的test/test遠程連接某一地址實現(xiàn)成功登錄,如圖6所示??赏耆L問和控制該服務(wù)器中的任何文件,達到滲透目的。

      圖6 成功遠程登錄WebLogic服務(wù)器主機Fig.6 Successful remote login to WebLogic server host

      以上利用Java反序列化漏洞快速成功實現(xiàn)滲透的案例充分表明,該漏洞極易被利用,且能造成十分嚴重的后果。因此,凡是部署了基于Java的Web應(yīng)用的主機都應(yīng)警惕Java反序列化漏洞,并及時進行相應(yīng)的安全加固工作,以避免產(chǎn)生惡性信息安全事件。

      4 漏洞防范與修復(fù)

      對于自行開發(fā)的Java應(yīng)用程序,Java反序列化漏洞的防范需要開發(fā)者對Java語言進行安全性檢查與安全加固。隨著Java類庫的功能不斷更新、擴展,某個類只要實現(xiàn)了序列化接口,就有可能成為Java反序列化漏洞的載體。因此,針對漏洞成因,開發(fā)者應(yīng)著重關(guān)注軟件中用到的可序列化類,在反序列化操作之前進行安全性檢查,同時進行代碼安全加固,這樣可以簡單有效地提高安全性,有效降低漏洞爆發(fā)所造成的威脅程度。

      對于通用Java應(yīng)用程序,可針對主流中間件、框架的Java反序列化漏洞采取以下修復(fù)加固方法。

      (1)Apache Common Collections在3.2.2及以上版本中專門針對Java反序列化漏洞進行了安全處理,即對不安全的Java類的序列化支持增加開關(guān),并默認設(shè)置為關(guān)閉狀態(tài),因此使用官方提供的高版本commons-collections.jar替換Java應(yīng)用程序lib目錄的原有庫可規(guī)避漏洞風(fēng)險;

      (2)使用NibbleSecurity公司開發(fā)的修復(fù)補丁Se?rialKiller替換進行序列化操作的ObjectInputStream類。該方法為臨時解決方案,能快速封堵漏洞利用途徑,但對應(yīng)用產(chǎn)生的其他影響未知;

      (3)在不影響正常業(yè)務(wù)的前提下,刪除com?mons-collections.jar中的InvokerTransformer.class文件,對于JBoss,還需同時刪除InstantiateFactory.class和InstantiateTransformer.class文件;

      (4)將Java應(yīng)用程序升級至最新版本或者不在影響范圍內(nèi)的版本。

      5 結(jié)語

      國網(wǎng)智研院信息安全實驗室于2015年底Java反序列化漏洞公開后第一時間發(fā)布了風(fēng)險預(yù)警單,對全國電力信息系統(tǒng)開展漏洞隱患排查,足以說明這一新漏洞的出現(xiàn)引起了廣泛關(guān)注與重視。本文通過對漏洞的分析與利用展示,為該漏洞的挖掘探測提供了一定實踐依據(jù)。文中提到的修復(fù)防范措施已在湖北電力系統(tǒng)中得以應(yīng)用,有效提高了企業(yè)信息系統(tǒng)安全防護水平。

      (References)

      [1]郭瑞.Java反序列化漏洞研究[J].信息安全與技術(shù),2016,7(3):27-30.GUO Rui.Research on Java deserialization vulnera?bility [J].Information Security and Technology,2016,7(3):27-30.

      [2]Breg F,Polychronopoulos C D.Java virtual machine support for object serialization[J]. ACM Java Grande-ISCOPE (JGI2001)Conference,2001,15(3-5):263-275.

      Analysis on Java Deserialization Vulnerability and Research on the Methods to Fix It

      XU Jiangpei,WANG Jie,CAI Youmin,LIU Chang
      (State Grid Hubei Electric Power Research Institute,Wuhan Hubei 430077,China)

      In order to avoid the use of Java deserialization vulnerability to influence core busi?ness of the enterprise,to generate fignificant information security incidents,the background,princi?ple,exploit method and tool of Java deserialization vulnerability are introduced in this paper.De?tailed steps have been given through a specific example which exploits the vulnerability to ac?quirethe privilegeof a server host system,and a variety of methods to fix the vulnerability have been proposed.

      Java deserialization vulnerability;vulnerability exploitation;information security

      TP393

      B

      1006-3986(2016)11-0047-004

      10.19308/j.hep.2016.11.011

      2016-10-15

      徐江珮(1990),女,湖北黃岡人,碩士,助理工程師。

      猜你喜歡
      序列化漏洞應(yīng)用程序
      漏洞
      如何建構(gòu)序列化閱讀教學(xué)
      甘肅教育(2020年14期)2020-09-11 07:58:36
      刪除Win10中自帶的應(yīng)用程序
      電腦報(2019年12期)2019-09-10 05:08:20
      三明:“兩票制”堵住加價漏洞
      漏洞在哪兒
      兒童時代(2016年6期)2016-09-14 04:54:43
      Java 反序列化漏洞研究
      高鐵急救應(yīng)補齊三漏洞
      作文訓(xùn)練微格化、序列化初探
      語文知識(2015年12期)2015-02-28 22:02:15
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      Java序列化技術(shù)的探討
      通许县| 奉新县| 和龙市| 青海省| 什邡市| 柘城县| 宽甸| 尖扎县| 光泽县| 积石山| 咸阳市| 临朐县| 嘉禾县| 荣成市| 班戈县| 沈阳市| 长白| 潼关县| 邢台市| 揭东县| 任丘市| 浮梁县| 甘谷县| 搜索| 襄汾县| 台山市| 东安县| 黑水县| 南皮县| 灵丘县| 同江市| 会同县| 隆回县| 兴业县| 遂昌县| 怀仁县| 肃南| 杂多县| 丽水市| 阳城县| 察隅县|