一、漏洞原理简介

  • 漏洞概述:

  • 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来源

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。