freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Weblogic IIOP反序列化漏洞(CVE-2020-2551) 漏洞分析
2020-03-01 09:00:30

前言

2020年1月15日,Oracle官方发布2020年1月关键补丁更新公告CPU(CriticalPatch Update),其中CVE-2020-2551的漏洞,漏洞等级为高危,CVVS评分为9.8分,漏洞利用难度低。影响范围为10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0。

漏洞浅析

从Oracle 官方的公告中看出该漏洞存在于Weblogic核心组件,影响的协议为IIOP协议。该漏洞依然是由于调用远程对象的实现存在缺陷,导致序列化对象可以任意构造,在使用之前未经安全检查,导致恶意代码被执行。通过分析,该漏洞的PoC构造与历史漏洞CVE-2017-3241、CVE-2018-3191都有一些相似的地方,而后在构造PoC的时候也可以发现。

简单了解下一些名词概念:

IIOP:IIOP 是 CORBA 的通信协议。它定义通过 CORBA 客户端与服务器之间的连线发送位的方式。

CORBA: 公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architecture),缩写为 CORBA,CORBA 是由对象管理组(OMG) 开发的标准分布式对象体系结构。远程对象的接口在平台无关接口定义语言 (IDL) 中进行说明。实现从 IDL 到特定编程语言的映射,将该语言绑定到 CORBA/IIOP。Java Standard Edition CORBA/IIOP 实现被称为 JavaIDL。 与 IDL 到 Java (idlj) 编译器一起,Java IDL 可用于定义、实现和访问 Java 编程语言中的 CORBA 对象。

RMI-IIOP:Java 程序员在编程时需要在分布式编程解决方案RMI 和 CORBA/IIOP (Java IDL) 之间进行选择。现在,可以通过遵循一些限制,可以使得RMI 服务器对象可以使用 IIOP 协议,并与任何语言编写的 CORBA 客户端对象进行通信。该解决方案被称为 RMI-IIOP。 RMI-IIOP 结合了 RMI 的易用性与 CORBA 的跨语言互操作性。

具体更多的相关概念以及weblogic的IIOP的相关知识,可以查阅官方文档,这里不做过多解释。

通过网上放出的漏洞PoC利用截图,我们可以根据异常的抛出行,大概推断出漏洞的出发点,这里不难发现最后的异常点抛在了这里weblogic.utils.io.ObjectStreamClass

那么我们根据流出的图,一步步逆向分析回去,向上跟踪哪个方法调用了他它,可以发现这里weblogic.corba.utils. ValueHandlerImpl最后调用了readObject方法:

再继续往上走,发现同方法的readValue函数这里调用了上面的方法:

继续追踪分析,可以发现主要的函数weblogic.iiop. IIOPInputStream方法中存在问题,到这里就基本很清晰了:

根据官方的描述,攻击者可以通过 IIOP 协议远程访问 Weblogic Server 服务器上的远程接口,传入恶意数据,从而获取服务器权限并在未授权情况下远程执行任意代码。Weblogic默认的IIOP协议端口为7001,默认开启。根据漏洞披露的信息这个漏洞是JNDI注入。需要寻找到weblogic中的工厂类,进行封装发送,通过查阅官方的一些手册,可以使用weblogic.jndi.WLInitialContextFactory该工厂方法。

*本文作者:WebRAY,转载请注明来自FreeBuf.COM

# 漏洞分析 # CVE-2020-2551 # Weblogic IIOP
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者