WebLogic T3协议反序列化命令执行漏洞
一、漏洞原理简介
漏洞概述:
CVE-2018-2628是Oracle WebLogic Server(WLS)核心组件中的一个反序列化命令执行漏洞。
允许未授权的用户通过T3协议在远程服务器上执行任意命令,从而可能完全控制受影响的服务器。
漏洞原理:
Java反射机制:Java反射机制允许程序在运行时动态地获取类的信息,包括类的所有属性和方法,并且可以调用这些属性和方法。
RMI(Remote Method Invocation,远程方法调用):RMI是Java的一部分,用于开发基于Java的分布式应用。RMI在传输过程中使用序列化和反序列化。如果RMI服务端端口对外开放,并且服务端使用了像
Apache Commons Collections
这样的库,那么可能会导致远程命令执行。T3协议:T3协议用于在WebLogic服务器和其他类型的Java程序之间传输信息。
服务器实例会跟踪连接到应用程序的每个Java虚拟机(JVM)中, 并创建T3协议通信连接,将流量传输到Java虚拟机。
当WebLogic控制台端口(默认为7001端口)开放时,T3服务会默认开启。攻击者可以通过T3协议发送恶意的反序列化数据,进行反序列化,实现对存在漏洞的WebLogic组件的远程代码执行攻击。
影响版本:
Oracle WebLogic Server 10.3.6.0
Oracle WebLogic Server 12.1.3.0
Oracle WebLogic Server 12.2.1.2
Oracle WebLogic Server 12.2.1.3
二、漏洞复现
靶机:ubuntu22.04(中间件用)
打开靶机,在终端分别输入以下命令
docker images
//查看镜像ID
docker run -d -p 8080:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=10.10.10.136 8e55f85571c8
sudo docker exec -it practical_snyder /bin/bash
敲完后,在浏览器防问靶场IP+8080端口,看到靶场首页(登录账号密码都是admin)
登录后,点击左侧镜像管理,然后点击右上角的一键同步(更新镜像源)
更新完之后,搜索CVE-2018-2628,然后点击下载
在首页启动靶场,然后访问相应的端口
此时,在kali上输入以下命令下载POC
git clone https://github.com/jas502n/CVE-2018-2628.git
此时,使用以下工具写入shell(填写IP和端口)
工具下载地址:
https://github.com/k8gege/K8tools/blame/master/CVE-2018-2628%20Weblogic%20GetShell%20Exploit.rar
解压密码:
k8gege
然后进入CVE-2018-2628目录,执行以下命令,填入写入shell的地址,发现可以命令执行
写入shell后会在短时间内自动删除,所以可能要多执行几次命令才会有回显
python2 cve-2018-2628.py
三、修复方案
及时更新补丁
禁用T3协议
禁止T3端口对外开放,或者限制可访问T3端口的IP来源
免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。