前言

前言

💡 原文中文,约6000字,阅读约需15分钟。
📝

内容提要

本文分析了Weblogic CVE-2020-2551漏洞,该漏洞属于IIOP协议反序列化高危漏洞,CVSS评分9.8。文章介绍了IIOP协议原理、漏洞成因及利用方法,通过构造恶意JtaTransactionManager对象触发反序列化,实现远程代码执行。同时提供了调试分析和Gadget chain,并指出该漏洞影响范围广,是首个IIOP协议反序列化漏洞。

🔎

延伸解读

IIOP协议与Weblogic端口特性

IIOP是CORBA在TCP/IP上的实现,Weblogic的7001端口能同时响应T3、HTTP、IIOP等协议,被称为“万金油”端口。攻击者利用IIOP协议发送恶意序列化数据,可绕过传统T3协议的安全限制。理解IIOP协议的基本原理,有助于把握该漏洞的触发机制和防护重点。

漏洞利用的关键点

该漏洞利用的核心在于通过JtaTransactionManager对象,其userTransactionName属性可控,可指向攻击者控制的RMI或LDAP服务,从而在反序列化时触发JNDI查找,实现远程代码执行。攻击者通过IIOP协议绑定恶意对象,触发服务端反序列化,整个过程无需复杂网络配置,利用难度低。

调试与版本差异

调试时需注意Weblogic版本差异:12.2.1.3之前断点位于wlfullclient.jar中的ConnectionManager#dispatch,之后则位于com.oracle.weblogic.iiop.jar。Weblogic 10可能因未使用该包而无法看到GIOP请求,导致调试困难。理解这些差异有助于准确分析漏洞在不同版本上的表现。

Q&A

CVE-2020-2551是什么漏洞?它的CVSS评分和影响版本有哪些?

CVE-2020-2551是Weblogic的IIOP协议反序列化漏洞,属于高危漏洞,CVSS评分为9.8分。影响版本包括10.3.6.0.0、12.1.3.0.0、12.2.1.3.0和12.2.1.4.0。

IIOP协议是什么?它和GIOP有什么关系?

IIOP(Internet Inter-ORB Protocol)是Internet对象请求代理间协议,用于Java程序与其他语言的CORBA实现互操作。它规定了GIOP消息通过TCP/IP连接进行交换的规范。GIOP是通用对象请求协议,规定了标准的传输语法和消息格式,而IIOP是GIOP针对TCP/IP层的具体实现。

CVE-2020-2551漏洞的成因是什么?

漏洞成因是Weblogic的IIOP协议在处理反序列化数据时,未对恶意对象进行有效过滤,导致攻击者可以构造恶意的JtaTransactionManager对象,通过JndiTemplate.lookup方法触发远程代码执行。

CVE-2020-2551漏洞的利用方法是什么?

攻击者通过IIOP协议向Weblogic发送恶意请求,利用JtaTransactionManager对象设置userTransactionName为恶意的RMI或LDAP地址,然后通过context.rebind或bind方法触发反序列化,最终实现远程代码执行。

CVE-2020-2551的Gadget chain是怎样的?

Gadget chain为:Context.rebind() -> InitialContext.rebind() -> ContextImpl.rebind() -> _NamingContextAnyStub.rebind_any() -> IIOPInputStream.read_value() -> ValueHandlerImpl.readValue() -> ValueHandlerImpl.readValueData() -> JtaTransactionManager.readObject() -> initUserTransactionAndTransactionManager() -> lookupUserTransaction() -> JndiTemplate.lookup()。

CVE-2020-2551漏洞有什么特点和影响?

CVE-2020-2551是第一个IIOP协议的反序列化漏洞,影响范围广,利用难度低,CVSS评分高达9.8,可导致远程代码执行,危害严重。

在调试CVE-2020-2551时,断点应该设置在哪个位置?

断点应设置在weblogic.iiop.jar中的weblogic.iiop.ConnectionManager#dispatch。注意:12.2.1.3之前版本断点设置在lib.wlfullclient.jar中的weblogic.iiop.jar内,12.2.1.3之后版本设置在lib.com.oracle.weblogic.iiop.jar内。

🏷️

标签

➡️

继续阅读