
सरल Python 3 स्क्रिप्ट "Log4j" Java लाइब्रेरी की भेद्यता (CVE-2021-44228) का पता लगाने के लिए, URLs की सूची के लिए मल्टीथ्रेडिंग के साथ
आप log4j RCE कमजोरी CVE-2021-44228 के विरुद्ध शोषण प्रयासों की खोज के लिए इन कमांड और नियमों का उपयोग कर सकते हैं
यह कमांड फ़ोल्डर /var/log - '/usr/var/log' और सभी उप-फ़ोल्डरों में असंपीड़ित फ़ाइलों में शोषण प्रयासों की खोज करता है
sudo egrep -I -i -r '\$(\{|%7B)jndi:(ldap[s]?|rmi|dns|nis|iiop|corba|nds|http):/[^\n]+' /var/log
यह कमांड फ़ोल्डर /var/log और सभी उप-फ़ोल्डरों में संपीड़ित फ़ाइलों में शोषण प्रयासों की खोज करता है
sudo find /var/log -name \*.gz -print0 | xargs -0 zgrep -E -i '\$(\{|%7B)jndi:(ldap[s]?|rmi|dns|nis|iiop|corba|nds|http):/[^\n]+'
ये कमांड अस्पष्ट रूपांतरों को भी कवर करते हैं लेकिन मिलान में फ़ाइल नाम का अभाव है।
यह कमांड फ़ोल्डर /var/log और सभी उप-फ़ोल्डरों में असंपीड़ित फ़ाइलों में शोषण प्रयासों की खोज करता है
sudo find /var/log/ -type f -exec sh -c "cat {} | sed -e 's/\${lower://'g | tr -d '}' | egrep -I -i 'jndi:(ldap[s]?|rmi|dns|nis|iiop|corba|nds|http):'" \;
यह कमांड फ़ोल्डर /var/log और सभी उप-फ़ोल्डरों में संपीड़ित फ़ाइलों में शोषण प्रयासों की खोज करता है
sudo find /var/log/ -name '*.gz' -type f -exec sh -c "zcat {} | sed -e 's/\${lower://'g | tr -d '}' | egrep -i 'jndi:(ldap[s]?|rmi|dns|nis|iiop|corba|nds|http):'" \;
सबसे अधिक अस्पष्ट रूपांतरों को भी कवर करने के लिए एक विशाल regex: https://github.com/back2root/log4shell-rex
(?:\$|%(?:25)*24|\\(?:0024|0{0,2}44))(?:{|%(?:25)*7[Bb]|\\(?:007[Bb]|0{0,2}173)).{0,30}?((?:[Jj]|%(?:25)*[46][Aa]|\\(?:00[46][Aa]|0{0,2}1[15]2)).{0,30}?(?:[Nn]|%(?:25)*[46][Ee]|\\(?:00[46][Ee]|0{0,2}1[15]6)).{0,30}?(?:[Dd]|%(?:25)*[46]4|\\(?:00[46]4|0{0,2}1[04]4)).{0,30}?(?:[Ii]|%(?:25)*[46]9|\\(?:00[46]9|0{0,2}1[15]1)|ı).{0,30}?(?::|%(?:25)*3[Aa]|\\(?:003[Aa]|0{0,2}72)).{0,30}?((?:[Ll]|%(?:25)*[46][Cc]|\\(?:00[46][Cc]|0{0,2}1[15]4)).{0,30}?(?:[Dd]|%(?:25)*[46]4|\\(?:00[46]4|0{0,2}1[04]4)).{0,30}?(?:[Aa]|%(?:25)*[46]1|\\(?:00[46]1|0{0,2}1[04]1)).{0,30}?(?:[Pp]|%(?:25)*[57]0|\\(?:00[57]0|0{0,2}1[26]0))(?:.{0,30}?(?:[Ss]|%(?:25)*[57]3|\\(?:00[57]3|0{0,2}1[26]3)))?|(?:[Rr]|%(?:25)*[57]2|\\(?:00[57]2|0{0,2}1[26]2)).{0,30}?(?:[Mm]|%(?:25)*[46][Dd]|\\(?:00[46][Dd]|0{0,2}1[15]5)).{0,30}?(?:[Ii]|%(?:25)*[46]9|\\(?:00[46]9|0{0,2}1[15]1)|ı)|(?:[Dd]|%(?:25)*[46]4|\\(?:00[46]4|0{0,2}1[04]4)).{0,30}?(?:[Nn]|%(?:25)*[46][Ee]|\\(?:00[46][Ee]|0{0,2}1[15]6)).{0,30}?(?:[Ss]|%(?:25)*[57]3|\\(?:00[57]3|0{0,2}1[26]3))|(?:[Nn]|%(?:25)*[46][Ee]|\\(?:00[46][Ee]|0{0,2}1[15]6)).{0,30}?(?:[Ii]|%(?:25)*[46]9|\\(?:00[46]9|0{0,2}1[15]1)|ı).{0,30}?(?:[Ss]|%(?:25)*[57]3|\\(?:00[57]3|0{0,2}1[26]3))|(?:.{0,30}?(?:[Ii]|%(?:25)*[46]9|\\(?:00[46]9|0{0,2}1[15]1)|ı)){2}.{0,30}?(?:[Oo]|%(?:25)*[46][Ff]|\\(?:00[46][Ff]|0{0,2}1[15]7)).{0,30}?(?:[Pp]|%(?:25)*[57]0|\\(?:00[57]0|0{0,2}1[26]0))|(?:[Cc]|%(?:25)*[46]3|\\(?:00[46]3|0{0,2}1[04]3)).{0,30}?(?:[Oo]|%(?:25)*[46][Ff]|\\(?:00[46][Ff]|0{0,2}1[15]7)).{0,30}?(?:[Rr]|%(?:25)*[57]2|\\(?:00[57]2|0{0,2}1[26]2)).{0,30}?(?:[Bb]|%(?:25)*[46]2|\\(?:00[46]2|0{0,2}1[04]2)).{0,30}?(?:[Aa]|%(?:25)*[46]1|\\(?:00[46]1|0{0,2}1[04]1))|(?:[Nn]|%(?:25)*[46][Ee]|\\(?:00[46][Ee]|0{0,2}1[15]6)).{0,30}?(?:[Dd]|%(?:25)*[46]4|\\(?:00[46]4|0{0,2}1[04]4)).{0,30}?(?:[Ss]|%(?:25)*[57]3|\\(?:00[57]3|0{0,2}1[26]3))|(?:[Hh]|%(?:25)*[46]8|\\(?:00[46]8|0{0,2}1[15]0))(?:.{0,30}?(?:[Tt]|%(?:25)*[57]4|\\(?:00[57]4|0{0,2}1[26]4))){2}.{0,30}?(?:[Pp]|%(?:25)*[57]0|\\(?:00[57]0|0{0,2}1[26]0))(?:.{0,30}?(?:[Ss]|%(?:25)*[57]3|\\(?:00[57]3|0{0,2}1[26]3)))?).{0,30}?(?::|%(?:25)*3[Aa]|\\(?:003[Aa]|0{0,2}72)).{0,30}?(?:\/|%(?:25)*2[Ff]|\\(?:002[Ff]|0{0,2}57)|\${)|(?:[Bb]|%(?:25)*[46]2|\\(?:00[46]2|0{0,2}1[04]2)).{0,30}?(?:[Aa]|%(?:25)*[46]1|\\(?:00[46]1|0{0,2}1[04]1)).{0,30}?(?:[Ss]|%(?:25)*[57]3|\\(?:00[57]3|0{0,2}1[26]3)).{0,30}?(?:[Ee]|%(?:25)*[46]5|\\(?:00[46]5|0{0,2}1[04]5)).{2,60}?(?::|%(?:25)*3[Aa]|\\(?:003[Aa]|0{0,2}72))(JH[s-v]|[\x2b\x2f-9A-Za-z][CSiy]R7|[\x2b\x2f-9A-Za-z]{2}[048AEIMQUYcgkosw]ke[\x2b\x2f-9w-z]))
Python आधारित स्कैनर जो एक्सप्लॉइट कोड के सबसे अस्पष्ट रूपों का पता लगाता है।
https://github.com/Neo23x0/log4shell-detector
ps aux | egrep '[l]og4j'
find / -iname "log4j*"
lsof | grep log4j
grep -r --include *.[wj]ar "JndiLookup.class" / 2>&1 | grep matches
gci 'C:\' -rec -force -include *.jar -ea 0 | foreach {select-string "JndiLookup.class" $_} | select -exp Path
द्वारा @CyberRaiju
https://github.com/Neo23x0/signature-base/blob/master/yara/expl_log4j_cve_2021_44228.yar
कृपया ऐसे निष्कर्षों की रिपोर्ट करें जो इन पहचान प्रयासों द्वारा कवर नहीं किए गए हैं।
Python 3 में विकसित स्क्रिप्ट "log4j-detect.py" यह पता लगाने के लिए जिम्मेदार है कि URL की सूची CVE-2021-44228 के लिए संवेदनशील है या नहीं।
ऐसा करने के लिए, यह निर्दिष्ट सूची के प्रत्येक URL पर थ्रेड्स (उच्च प्रदर्शन) का उपयोग करके GET अनुरोध भेजता है। GET अनुरोध में एक पेलोड होता है जो सफलता पर Burp Collaborator / interactsh को DNS अनुरोध लौटाता है। यह पेलोड एक परीक्षण पैरामीटर और "User-Agent" / "Referer" / "X-Forwarded-For" / "Authentication" हेडर में भेजा जाता है।
अंत में, यदि कोई होस्ट संवेदनशील है, तो Burp Collaborator / interactsh पेलोड के सबडोमेन उपसर्ग और स्क्रिप्ट के आउटपुट में एक पहचान संख्या दिखाई देगी, जिससे पता चलता है कि किस होस्ट ने DNS के माध्यम से प्रतिक्रिया दी है।
यह ध्यान दिया जाना चाहिए कि यह स्क्रिप्ट केवल कमजोरी का DNS पता लगाने का काम करती है और दूरस्थ कमांड निष्पादन का परीक्षण नहीं करती है।
wget https://github.com/takito1812/log4j-detect/raw/main/log4j-detect.py
python3 log4j-detect.py <urlFile> <collaboratorPayload>
