CVE |
您所在的位置:网站首页 › oracle命令查询 › CVE |
CVE-2023-21839 WebLogic Server RCE分析 阅读量88436 发布时间 : 2023-04-04 14:00:17 x译文声明本文是翻译文章 译文仅供参考,具体内容表达以及含义原文为准。 项目介绍WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。 漏洞描述 WebLogic存在远程代码执行漏洞,该漏洞允许未经身份验证的远程攻击者通过T3/IIOP协议网络访问并破坏易受攻击的WebLogic服务器,成功利用此漏洞可能导致Oracle WebLogic服务器被接管或敏感信息泄露。漏洞原理其实是通过Weblogic t3/iiop协议支持远程绑定对象bind到服务端,当远程对象继承自OpaqueReference时,lookup查看远程对象时,服务端调用远程对象getReferent方法,其中的remoteJNDIName参数可控,导致攻击者可利用rmi/ldap远程协议进行远程命令执行。 利用范围Oracle WebLogic Server 12.2.1.3.0 Oracle WebLogic Server 12.2.1.4.0 Oracle WebLogic Server 14.1.1.0.0 漏洞分析 环境搭建本次漏洞分析复现的版本为:Oracle WebLogic Server 12.2.1.3
weblogic10 及以后的版本,不能直接使用server/lib 目录下的 weblogic.jar 了,需要手动执行一个命令生成手动生成 wlfullclient.jar 新建JAVA项目,导入生成的wlfullclient.jar POC如下图所示: 漏洞POC 从POC代码上来看,核心的部分是方法中将通过调用getInitialContext方法创建一个InitialContext对象;使用反射访问和修改ForeignOpaqueReference对象中的私有字段jndiEnvironment和emoteJNDIName,调用InitialContext对象的bind方法,将ForeignOpaqueReference对象绑定到JNDI服务,最后调用InitialContext对象的lookup方法,执行查找。 漏洞利用类之一:weblogic.deployment.jms.ForeignOpaqueReference 分析ForeignOpaqueReference这个类,其实继承了QpaqueReference接口 而QpaqueReference在官方文档中提示了当实现此接口的对象从 WLContext 中检索(通过查找或 listBindings)时,由 getReferent() 返回对象。 其实就也明白了为什么在POC中远程绑定了ForeignOpaqueReference对象,实际是因为ForeignOpaqueReference继承QpaqueReference,在远程查询该对象的时候,调用的将会是ForeignOpaqueReference.getReferent方法。 接下来就一步步分析一下weblogic.deployment.jms.ForeignOpaqueReference.getReferent()方法。 在后续的进行lookup操作之前会检查 JNDI 环境是否已正确配置以访问远程资源,主要是对jndiEnvironment和remoteJNDIName的检测,如果在if中的任何一个条件为真,那么将调用对象的lookup方法,如果 if 语句中的所有条件都为假,则会进入检查cachedReferent字段的阶段。结合上面方框的代码其实可以发现,只要this.jndiEnvironment不为空,就可以对InitialContext进行初始化,this.jndiEnvironment也可以使用反射的方式进行赋值。 通过retVal = context.lookup(evalMacros(this.remoteJNDIName))的实现,便可以利用rmi/ldap远程协议进行命令执行。 后续调试,进入bind方法,可以看到绑定的对象中通过反射对remoteJNDIName 和 jndiEnvironment属性赋值。 ClusteravleRemoteRef.invoke 后续调试其实发现已经远程获取并加载了恶意类。 并成功利用ldap协议进行远程命令执行。 在weblogic.jndi.internal.ForeignOpaqueReference这个类下同样可以利用IIOP协议实现JNDI注入。 漏洞复现 1、目前Oracle已经修复该漏洞并发布补丁,受影响的用户可参考官方通告及时下载并更新补丁,下载地址:https://support.oracle.com/rs?type=doc&id=2917213.2。 2、通过控制T3协议的访问来阻断利用T3协议的漏洞攻击。 3、通过关闭IIOP协议来阻断利用IIOP协议的漏洞攻击。 参考材料 1.Oracle Critical Patch Update Advisory – January 2023 2.https://www.pingsafe.com/blog/cve-2023-21839-oracle-weblogic-server-core-patch-advisory 3.https://docs.oracle.com/html/E80373_03/weblogic/jndi/OpaqueReference.html https://docs.oracle.com/en/ 本文翻译自 原文链接。如若转载请注明出处。 商务合作,文章发布请联系 [email protected]本文由星阑科技原创发布 转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/287753 安全客 - 有思想的安全新媒体 本文转载自: 如若转载,请注明出处: 安全客 - 有思想的安全新媒体 分享到:![]() ![]() ![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |