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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/grimch/log4j-cve-2021-44228-workaround
भेद्यता विश्लेषणशोषणआपूर्ति श्रृंखला सुरक्षागलत कॉन्फ़िगरेशनघटना प्रतिक्रिया
GitHubgrimch/log4j-cve-2021-44228-workaround

log4j-CVE-2021-44228-workaround

log4j CVE-2021-44228 भेद्यता के लिए सामान्य प्रयोजन वर्कअराउंड

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

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

सभी देखें →

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

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

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

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

log4j-CVE-2021-44228-workaround

A. समाधान विवरण

यह परियोजना log4j CVE-2021-44228 भेद्यता के लिए एक सामान्य-उद्देश्यीय वर्कअराउंड प्रदान करती है, जिसका उपयोग तब किया जा सकता है जब आपके पास अल्पावधि में अपनी संबंधित परियोजना को पुनर्निर्मित करने या log4j-core जार को पैच करने का विकल्प न हो।

इसके पीछे का विचार काफी सरल है: हम क्लास लोडर को java रनटाइम विकल्प "-Xbootclasspath/a" का उपयोग करके "JndiLookup" क्लास का एक "खाली" संस्करण लोड करने के लिए बाध्य करते हैं।

इसलिए संपूर्ण वर्कअराउंड केवल इस एकल क्लास "org.apache.logging.log4j.core.lookup.JndiLookup.java" से मिलकर बना है और इसकी कोई अन्य निर्भरता नहीं है।

सुविधा के लिए एक pom.xml भी है, ताकि आप इसे Maven के माध्यम से संकलित कर सकें और jar बना सकें, लेकिन आप अपने पसंदीदा JDK का उपयोग करके "javac" और "jar" कमांड से भी यह आसानी से कर सकते हैं।

ध्यान दें कि "JndiLookup" क्लास का यह खाली संस्करण मूल log4j2 कार्यान्वयन के साथ संगत नहीं हो सकता, क्योंकि यह कुछ क्लास लोडिंग स्थितियों में विफल हो जाएगा।

वर्कअराउंड लागू करते समय आपको निम्नलिखित संदेश दिखाई देगा:

root@kitploit:~
"WARN JNDI lookup class is not available because this JRE does not support JNDI. 
JNDI string lookups will not be available, continuing configuration. 
Ignoring java.lang.ClassCastException: class org.apache.logging.log4j.core.lookup.JndiLookup"

फिर भी Log4j2 बिना किसी समस्या के काम करता रहेगा, बस बिना किसी JNDI लुकअप के - बस इस तरह - JNDI लुकअप अक्षम कर दिया गया है!

एक बार जब आप क्लास संकलित कर लेते हैं और jar फ़ाइल बना लेते हैं, तो अपने Java कमांड की शुरुआत में "-Xbootclasspath/a:" विकल्प जोड़ें और उस निर्देशिका की ओर इंगित करें जहाँ आपने jar फ़ाइल रखी है (जैसे log4j-workaround-1.0-SNAPSHOT.jar)। इसे करने के उदाहरण के लिए proof of concept अनुभाग देखें।

आप इस वर्कअराउंड को जिस Java कमांड पर लागू करेंगे, वह कुछ भी प्रारंभ कर सकता है (Weblgic, Tomcat, spring द्वारा निर्मित fat jar, ...)।

B. प्रूफ ऑफ कॉन्सेप्ट

यदि आप केवल वर्कअराउंड में रुचि रखते हैं, न कि यह जाँचने में कि यह वास्तव में काम करता है, तो आप निम्नलिखित को अनदेखा कर सकते हैं।

दृष्टिकोण को मान्य करने के लिए मैंने एक "POC" फ़ोल्डर जोड़ा है, जिसमें एक और Maven प्रोजेक्ट है। मैं कोई यूनिट परीक्षण उपयोग नहीं करना चाहता था, बल्कि प्रोडक्शन सेट-अप के करीब रहना चाहता था, जो फैट जार को स्पष्ट रूप से कमांड लाइन पर लॉन्च करते हैं या कंटेनर लॉन्च करते हैं, जैसे उस Tomcat के साथ जिसके साथ मैंने इसे मान्य किया है।

प्रूफ ऑफ कॉन्सेप्ट में दो क्लास हैं: "POC.java", जो कमांड लाइन पर वर्कअराउंड का परीक्षण करता है, और "POCServlet.java", जो एप्लिकेशन सर्वर में इसका परीक्षण करता है।

दोनों परिदृश्यों में "${jndi:ldap://localhost/test}" लॉग करने का प्रयास किया जाता है, जिसके कारण वर्कअराउंड लागू न होने पर log4j आपके लोकल होस्ट पर ldap से कनेक्ट करने का प्रयास करेगा और connection refused के साथ विफल हो जाएगा..

कमांड लाइन POC चलाने के लिए (एक बार जब आप इसे Maven में बना लें):

  • "target\log4j-workaround-1.0-SNAPSHOT\WEB-INF" निर्देशिका में जाएँ और वहाँ चलाएँ (यदि आप Windows कमांड लाइन पर हैं):

    java -Xbootclasspath/a:..\..\..\..\target\log4j-workaround-1.0-SNAPSHOT.jar -classpath classes;lib\* com.github.grimch.log4j_workaround.poc.POC

POC को Tomcat के साथ चलाने के लिए:

  • पहले "log4j-workaround-1.0-SNAPSHOT.war" को Tomcat की "webapps" निर्देशिका में डिप्लॉय करें।
  • Java कमांड को संशोधित करने के बजाय, केवल "CATALINA_OPTS" वातावरण चर को तदनुसार सेट करें:
  • Set CATALINA_OPTS=-Xbootclasspath/a:<path-to-log4j-workaround-1.0-SNAPSHOT.jar>
  • फिर Tomcat प्रारंभ करें, जैसे "catalina start" का उपयोग करके।
  • अपने ब्राउज़र में URL http://localhost:8080/log4j-workaround-1.0-SNAPSHOT/POC खोलें।
  • "WARN JNDI lookup class is not available ..." संदेश के लिए अपने टर्मिनल या catalina.out की जाँच करें।

अंतिम टिप्पणियाँ

"-Xbootclasspath" का उपयोग आखिर क्यों करें और वर्कअराउंड jar को "सामान्य" classpath की पहली प्रविष्टि के रूप में क्यों न रखें? खैर - कुछ कंटेनर आपको क्लासलोडिंग को इस प्रकार प्रभावित करने देते हैं कि परिनियोजित एप्लिकेशन आर्काइव में मौजूद jar फ़ाइलों को सिस्टम classpath में मौजूद समान jar फ़ाइलों पर वरीयता मिलती है। दूसरी ओर, बूटस्ट्रैप classpath में जो कुछ भी है, उसे बाकी सब पर वरीयता प्राप्त होती है।

हालाँकि, यदि आप निश्चित हैं कि आप इनमें से किसी भी चीज़ का उपयोग नहीं कर रहे हैं (जैसे Weblogic में "prefer-application-packages"), तो आप "-classpath" विकल्प का भी उपयोग कर सकते हैं।

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