999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2016-11-07 07:25:37徐江珮蔡攸敏
湖北電力 2016年11期
關(guān)鍵詞:利用

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

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

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

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

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

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

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

0 引言

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

1 Java反序列化漏洞概述

1.1 漏洞背景

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

直到2015年11月6日,國外FoxGlove Security安全團(tuán)隊(duì)的一名成員在其一篇文章中詳細(xì)介紹了如何利用Java反序列化漏洞攻擊最新版本的WebLogic、WebSphere、JBoss、Jenkins、OpenNMS等主流的基于Ja?va架構(gòu)的中間件和框架,實(shí)現(xiàn)遠(yuǎn)程任意代碼執(zhí)行、獲取網(wǎng)站服務(wù)器控制權(quán)等嚴(yá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è)計(jì)語言,具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計(jì)算機(jī)、移動(dòng)設(shè)備和互聯(lián)網(wǎng)中。在最新的編程語言排行榜中,Java仍然高居首位,在所有編程語言中占有最高的使用率(20.5%)[1]。在當(dāng)今全球云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)和移動(dòng)應(yīng)用產(chǎn)業(yè)快速發(fā)展的環(huán)境下,不斷更新升級的Java技術(shù)展現(xiàn)了卓越的競爭力和愈加廣闊的應(yīng)用前景。

在Java中,序列化是指將對象轉(zhuǎn)換成字節(jié)流,以便于存儲(chǔ)在內(nèi)存、文件、數(shù)據(jù)庫中或者在網(wǎng)絡(luò)上進(jìn)行傳送,該處理由ObjectOutputStream類的writeObject()方法實(shí)現(xiàn);反序列化是序列化的逆過程,將字節(jié)流還原成Java對象,該處理由ObjectInputStream類的readObject()方法實(shí)現(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)存信息的兩個(gè)Web應(yīng)用在進(jìn)行遠(yuǎn)程通信時(shí),無論相互間發(fā)送何種類型的數(shù)據(jù),在網(wǎng)絡(luò)中實(shí)際上都是以二進(jìn)制序列的形式傳輸?shù)摹榇耍l(fā)送方就必須將要發(fā)送的Java對象序列化為字節(jié)流,接收方則需要將字節(jié)流再反序列化還原得到Java對象,才能實(shí)現(xiàn)正常通信。

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

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

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

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

2 漏洞利用方法及工具

基于Java反序列化漏洞的原理,要利用該漏洞,首先需要在目標(biāo)Java應(yīng)用中找到一個(gè)接受外部輸入的序列化對象的反序列化接收點(diǎn)。可以通過兩種方式尋找:

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

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

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

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

ysoserial是由國外人員開發(fā)的最早的Java反序列化漏洞利用工具,運(yùn)行于命令行窗口;WebLog?ic_EXP是專門針對WebLogic開發(fā)的Java反序列化漏洞利用工具。該工具具有圖形化使用界面,支持本地命令執(zhí)行并回顯,連接目標(biāo)主機(jī)后可通過文件上傳、執(zhí)行CMD語句等方式驗(yàn)證目標(biāo)服務(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)限實(shí)例

Weblogic在國內(nèi)的應(yīng)用范圍比較廣,支撐著很多企業(yè)的核心業(yè)務(wù),以下通過一個(gè)實(shí)例介紹如何探測存在Java反序列化漏洞的WebLogic服務(wù)器,進(jìn)而利用漏洞獲取服務(wù)器主機(jī)系統(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ù),給出主要步驟的詳細(xì)描述如下。

(1)端口掃描

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

圖3 端口掃描Fig.3 Port scanning

(2)連接測試

對上一步掃描發(fā)現(xiàn)的所有開放7001端口的IP列表,利用WebLogic_EXP工具逐一驗(yàn)證是否可連接。經(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”并點(diǎn)擊Execute執(zhí)行;

第二步,運(yùn)行“net localgroup administrators”查看管理員組;

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

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

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

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

(4)遠(yuǎn)程連接

最后,利用上一步創(chuàng)建的test/test遠(yuǎn)程連接某一地址實(shí)現(xiàn)成功登錄,如圖6所示。可完全訪問和控制該服務(wù)器中的任何文件,達(dá)到滲透目的。

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

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

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

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

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

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

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

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

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

5 結(jié)語

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

(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),女,湖北黃岡人,碩士,助理工程師。

猜你喜歡
利用
利用min{a,b}的積分表示解決一類絕對值不等式
利用倒推破難點(diǎn)
如何利用基本不等式比較大小
利用一半進(jìn)行移多補(bǔ)少
利用口訣算除法
利用數(shù)的分解來思考
Roommate is necessary when far away from home
利用
回收木再利用——Piet Hein Eek
低丘緩坡未利用地的開發(fā)利用探討
河北遙感(2015年4期)2015-07-18 11:05:06
主站蜘蛛池模板: 91蝌蚪视频在线观看| 欧美在线黄| 无码区日韩专区免费系列| 欧美激情视频一区| 特级aaaaaaaaa毛片免费视频| 色妞www精品视频一级下载| 99久久性生片| 三区在线视频| 亚洲欧美日韩天堂| 日本手机在线视频| 欧美日韩91| 免费毛片视频| 不卡午夜视频| 伊人蕉久影院| 亚洲日韩精品伊甸| 亚洲第七页| 乱色熟女综合一区二区| 国产精品自在线天天看片| 亚洲AV无码久久精品色欲| 福利一区三区| 天堂网国产| 99热在线只有精品| 性欧美久久| 久久精品一卡日本电影| 欲色天天综合网| 免费aa毛片| 亚洲香蕉久久| 色有码无码视频| 韩国福利一区| 久久综合色播五月男人的天堂| 国产区免费| 波多野结衣第一页| 国产高清不卡| 精品无码国产一区二区三区AV| 国产成人综合网| 一级福利视频| 亚洲av无码专区久久蜜芽| 91在线一9|永久视频在线| 国内精品免费| 中文字幕日韩视频欧美一区| 国产成人免费| 四虎综合网| 一区二区影院| 日韩小视频在线播放| 免费在线a视频| 午夜天堂视频| 视频国产精品丝袜第一页| 青青操国产视频| jizz国产在线| 亚洲黄色网站视频| 亚洲日韩精品伊甸| 国产成人av大片在线播放| 直接黄91麻豆网站| 亚洲成年人片| 午夜电影在线观看国产1区| 国产免费黄| 国产在线精品网址你懂的| 国产精品手机视频一区二区| 亚洲男人天堂2020| a在线亚洲男人的天堂试看| 污网站免费在线观看| 国产精品久久国产精麻豆99网站| 亚洲人成网站在线播放2019| 69免费在线视频| 韩国福利一区| 日韩色图区| 欧洲日本亚洲中文字幕| 99手机在线视频| 深爱婷婷激情网| 亚洲精品片911| 免费一级全黄少妇性色生活片| 男女男免费视频网站国产| 亚洲大尺码专区影院| 亚洲国产成人超福利久久精品| a级毛片一区二区免费视频| 成人av手机在线观看| 国产香蕉在线视频| 欧美国产日韩一区二区三区精品影视 | 免费毛片在线| 国产特级毛片| 青青青视频免费一区二区| 亚州AV秘 一区二区三区|