CVE-2023-21839-WebLogic Server远程代码执行

admin 2025年3月12日22:59:19评论27 views字数 1810阅读6分2秒阅读模式

一、概述

CVE-2023-21839是weblogic中的远程代码执行漏洞,由于weblogic IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问weblogic server,漏洞利用成功可能会导致oracle weblogic服务器被控制,远程注入操作系统命令或代码。

T3协议

用于在Weblogic服务器和其他类型的Java程序之间传输信息的协议。Weblogic会跟踪连接到应用程序的每个Java虚拟机,要将流量传输到Java虚拟机,Weblogic会创建一个T3连接。该链接会通过消除在网络之间的多个协议来最大化效率,从而使用较少的操作系统资源。用于T3连接的协议还可以最大限度减少数据包大小,提高传输速度。

二、原理

1. 协议层缺陷:T3/IIOP的开放性

WebLogic的T3协议(专有协议)和IIOP协议(基于CORBA的标准协议)用于分布式Java应用间的通信。这两种协议默认开启且未对访问权限进行严格限制,允许未经身份验证的远程用户通过7001端口直接与WebLogic服务交互。攻击者通过构造恶意请求,利用协议层对远程对象绑定的支持,将恶意对象注入服务端。

2. 漏洞触发点:OpaqueReference与lookup方法

    漏洞的核心在于WebLogic在处理远程绑定的对象时,未对lookup方法中的参数进行安全校验。具体流程如下:

远程对象绑定:攻击者通过T3/IIOP协议将继承自OpaqueReference接口的恶意对象绑定到WebLogic服务端。OpaqueReference是WebLogic内部用于延迟解析对象的接口,其getReferent()方法会在服务端执行lookup操作时被调用。

参数可控攻击者可控制getReferent()方法中的remoteJNDIName参数,将其指向攻击者控制的恶意JNDI服务地址(如LDAP或RMI服务)。

JNDI注入服务端在解析remoteJNDIName时,会向恶意JNDI服务器发起请求,加载并执行远程类(如通过javax.naming.Reference加载恶意Java类)。

3. 利用链:从JNDI到RCE

漏洞利用依赖以下关键步骤:

1.恶意JNDI服务搭建:攻击者部署包含恶意类的LDAP/RMI服务器(例如使用JNDIExploit工具),提供构造的反序列化Payload或远程类加载功能。

2.触发远程加载:通过lookup操作诱导WebLogic服务端连接恶意JNDI服务,下载并实例化攻击者指定的类(如Basic/ReverseShell类),从而执行任意命令。

3.执行环境依赖:若目标服务器的JDK版本较低(如≤8u191)或存在可利用的反序列化小工具(如commons-collections库),攻击者可通过反序列化直接实现RCE;否则需依赖远程类加载机制

4.漏洞模拟代码

CVE-2023-21839-WebLogic Server远程代码执行

继承OpaqueReference:WebLogic在处理远程绑定的对象时,若对象实现此接口,会在lookup时调用getReferent()方法。

控制jndiUrl:攻击者通过构造jndiUrl参数(如ldap://attacker.com/Exploit),诱导服务端在解析时连接恶意JNDI服务器。

5.漏洞影响范围

受影响版本

WebLogic Server 12.2.1.3.0、12.2.1.4.0、14.1.1.0.01510。

利用条件:T3/IIOP协议开放且未安装官方补丁,JDK版本或依赖库存在可利用的链711。    

三、复现

访问到靶场地址:

http://192.168.40.135:7001/console/login/LoginForm.jsp

CVE-2023-21839-WebLogic Server远程代码执行

下载exp,发现为go源码,需要进行编译。

CVE-2023-21839-WebLogic Server远程代码执行

安装go编译环境并编译。

CVE-2023-21839-WebLogic Server远程代码执行

CVE-2023-21839-WebLogic Server远程代码执行

查看文件权限,发现是可执行文件:

CVE-2023-21839-WebLogic Server远程代码执行

启动LDAP服务监听端口:

CVE-2023-21839-WebLogic Server远程代码执行

CVE-2023-21839-WebLogic Server远程代码执行

服务端接收到了请求,说明漏洞存在。

CVE-2023-21839-WebLogic Server远程代码执行

为了getshell,需要用以下命令查找如何构造可执行任意命令的poc:          

构造poc:

CVE-2023-21839-WebLogic Server远程代码执行

进入靶机容器,切换到文件创建目录,发现创建成功:

CVE-2023-21839-WebLogic Server远程代码执行

使用nc开启监听:

CVE-2023-21839-WebLogic Server远程代码执行

构造poc反弹shell:

CVE-2023-21839-WebLogic Server远程代码执行

靶机执行连接命令:

CVE-2023-21839-WebLogic Server远程代码执行

此时发现LDAP服务端已接收到请求:

CVE-2023-21839-WebLogic Server远程代码执行

等了一小会,发现反弹shell回来了:

CVE-2023-21839-WebLogic Server远程代码执行

成功getshell。

CVE-2023-21839-WebLogic Server远程代码执行

原文始发于微信公众号(智检安全):CVE-2023-21839-WebLogic Server远程代码执行

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月12日22:59:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2023-21839-WebLogic Server远程代码执行https://cn-sec.com/archives/3829123.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息