Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)

1 漏洞概述

CVE-2018-2628 是 Oracle WebLogic Server(WLS)核心组件中的一个反序列化命令执行漏洞。此漏洞允许未授权的用户通过 T3 协议在远程服务器上执行任意命令,从而可能完全控制受影响的服务器。

2 影响版本

该漏洞影响了以下版本的 Oracle WebLogic Server:

  • 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

3 漏洞原理

此漏洞主要利用了两个技术点:Java 反射机制和 RMI(Remote Method Invocation,远程方法调用)。

  1. Java 反射机制:Java 反射机制允许程序在运行时动态地获取类的信息,包括类的所有属性和方法,并且可以调用这些属性和方法。这种动态获取信息和调用方法的功能是 Java 反射机制的核心。

  2. RMI:RMI 是 Java 的一部分,用于开发基于 Java 的分布式应用。RMI 在传输过程中使用序列化和反序列化。如果 RMI 服务端端口对外开放,并且服务端使用了像 Apache Commons Collections 这样的库,那么可能会导致远程命令执行。

攻击者可以通过发送精心构造的 T3 协议数据,绕过 WebLogic 的黑名单限制,利用 Java 反射机制和 RMI 的漏洞,在目标服务器上执行任意命令。

4 漏洞部署

进入目录
cd vulhub/weblogic/CVE-2018-2628
漏洞环境部署
docker-compose up -d
查看端口
docker-compose ps

访问 ,您将看到页面,表示环境正在成功运行。

5 漏洞复现

5.1 漏洞验证

工具地址:GitHub - Lighird/CVE-2018-2628: CVE-2018-2628漏洞工具包

我们将工具包放到kali中解压即可

我们可以先用nmap来检测一下目标的服务是否开启

nmap -n -v -p7001,7002 192.168.135.132 --script=weblogic-t3-info

这里可以看到目标开启了7001端口,t3服务开启

确认开启我们可以使用检测工具来检测目标,首先利用

这个工具来检测,cd到目录下,将目标地址填入url.txt中即可

然后我们启动python文件

python2 CVE-2018-2628-MultiThreading.py 

我们可以看到成功,证明发出的payload成功,漏洞可以利用。

5.2 漏洞利用

这里我们使用工具:GitHub - jas502n/CVE-2018-2628: Weblogic 反序列化漏洞(CVE-2018-2628)

输入命令:

python CVE-2018-2628-Getshell.py 192.168.135.132 7001 shell1.jsp

这里就是shell的地址,复制之后打开就好了

我们可以看到是root权限了

这里我们需要执行什么命令将命令base64编码即可

比如我这里是ifconfig,将编码的接到=号后面即可

结果

6 漏洞修复建议

  1. 升级 WebLogic Server:对于受影响的版本,建议尽快升级到 Oracle 发布的修复了此漏洞的最新版本。

  2. 配置访问控制:如果无法立即升级,可以设置 weblogic.security.net.ConnectionFilterImpl 默认连接筛选器,对 T3/T3s 协议的访问权限进行配置,阻断漏洞利用。

  3. 关闭不必要的服务:关闭 WebLogic 控制台的 7001 端口(或其他自定义端口),这将自动关闭 T3 服务,从而降低漏洞被利用的风险。但请注意,这可能会影响 WebLogic 的正常功能。

  4. 网络安全措施:确保网络边界安全,使用防火墙等网络安全设备限制对 WebLogic 服务器的访问。

  5. 监控和日志记录:实施安全监控和日志记录策略,以便及时发现和响应任何可疑活动。

参考文章

Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)-腾讯云开发者社区-腾讯云

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 16:32:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 16:32:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 16:32:04       82 阅读
  4. Python语言-面向对象

    2024-05-14 16:32:04       91 阅读

热门阅读

  1. Kubernetes(k8s)的Network Policies解析

    2024-05-14 16:32:04       27 阅读
  2. 实用的chrome命令

    2024-05-14 16:32:04       25 阅读
  3. js通过视频链接获取视频时长

    2024-05-14 16:32:04       38 阅读
  4. Python实战开发及案例分析(20)—— 宽度优先

    2024-05-14 16:32:04       35 阅读
  5. 【前端每日一题】day5

    2024-05-14 16:32:04       37 阅读
  6. GNU/Linux - 是否可以多次打开同一个设备文件

    2024-05-14 16:32:04       29 阅读
  7. LeetCode-hot100题解—Day7

    2024-05-14 16:32:04       36 阅读
  8. 机器学习【简述】

    2024-05-14 16:32:04       31 阅读
  9. 【TypeScript声明合并简介以及使用方法】

    2024-05-14 16:32:04       39 阅读
  10. 【C++】字符串出现次数

    2024-05-14 16:32:04       31 阅读
  11. Mysql 锁

    Mysql 锁

    2024-05-14 16:32:04      36 阅读