
अपने IP नेटवर्क को स्कैन करें और log4j लाइब्रेरी में संभावित CVE-2021-44228 भेद्यता वाले होस्ट निर्धारित करें।
अपने आईपी नेटवर्क को स्कैन करें और log4j लाइब्रेरी में संभावित CVE-2021-44228 भेद्यता वाले होस्टों का पता लगाएं।
सुरक्षा ऑडिट के लिए कहीं बेहतर और उन्नत उपकरण मौजूद हैं, लेकिन उनमें से कई को व्यावसायिक पैठ (penetration) सॉफ्टवेयर या बाहरी, तृतीय-पक्ष सेवा या सॉफ्टवेयर की आवश्यकता होती है।
यह स्क्रिप्ट एक त्वरित और स्वतंत्र छोटे उपकरण के रूप में लिखी गई है। यह पुष्टि नहीं करेगी कि आपके सर्वर और डिवाइस 100% सुरक्षित हैं। इसे उन कई उपकरणों में से एक मानें जिनका उपयोग आपको अपने आईटी वातावरण का ऑडिट करने के लिए करना चाहिए। इसका उपयोग निजी और सार्वजनिक आईपी पते पर किया जा सकता है।
स्क्रिप्ट log4shell शोषण प्रदर्शन नहीं है। यह कोई नुकसान नहीं पहुंचाएगी या रिमोट कोड निष्पादित करने का प्रयास नहीं करेगी।
स्क्रिप्ट HTTPS (443 पर समाप्त होने वाले पोर्ट) या HTTP (अन्य सभी पोर्ट) अनुरोध बनाती है, जिसमें फ़ील्ड्स में विशेष स्ट्रिंग होती है: User-Agent, X-Api-Version और X-Forwarded-For। वह विशेष स्ट्रिंग ${jndi:ldap://some_listen_host:port} प्रारूप में होती है।
यदि कमजोर log4j लाइब्रेरी का उपयोग “उपयोगकर्ता -> सेवा | लोड बैलेंसर -> सुरक्षा -> सर्वर -> लॉगिंग” पथ में कहीं उपयोगकर्ता गतिविधि (हमारा http अनुरोध) लॉग करने के लिए किया जाता है, तो यह JNDI स्ट्रिंग को पार्स करेगी और हमारे some_listen_host:port पर LDAP सत्र स्थापित करने का प्रयास करेगी।
यदि हम some_listen_host:port पर ट्रैफ़िक की निगरानी करते हैं और ऐसे पैकेट देखते हैं, तो उनके स्रोत की आगे जांच की जानी चाहिए।
जिन डिफ़ॉल्ट पोर्ट पर http(s) अनुरोध भेजे जाते हैं वे 80, 8080, 443 और 8443 हैं।
ये दोनों होस्ट एक ही मशीन हो सकते हैं।
लिसन होस्ट पर, किसी खाली TCP पोर्ट पर प्राप्त पैकेटों को पकड़ने के लिए tcpdump शुरू करें। उदाहरण:
tcpdump -nn -i ens160 tcp port 12345
Linux होस्ट पर, स्क्रिप्ट को आवश्यक पैरामीटर के साथ चलाएँ। उदाहरण:
./log4j-quick-scan.py -e 192.168.0.3:12345 192.168.0.0/24"
यह 192.168.0.0/24 नेटवर्क का परीक्षण करेगा जो पोर्ट 12345 पर लिसन होस्ट 192.158.0.3 के लिए TCP कनेक्शन ट्रिगर करने का प्रयास करेगा।
लिसन होस्ट पर tcpdump आउटपुट की निगरानी करें। जो लक्ष्य log4j भेद्यता के संदिग्ध हैं, वे JNDI स्ट्रिंग को पार्स करेंगे और LDAP कनेक्शन स्थापित करने का प्रयास करेंगे।
सभी पोर्ट को स्कैन करना अप्रभावी और अत्यंत धीमा है। चूंकि log4j लाइब्रेरी कई उत्पादों में उपयोग होती है, पहले निर्धारित करें कि आपके वातावरण में कौन से वेब पोर्ट उपयोग होते हैं। स्क्रिप्ट को अपनी कस्टम पोर्ट सूची के साथ चलाएँ।
ऐसे कई तत्व हैं जो स्क्रिप्ट और अन्य उपकरणों को बाहरी रूप से log4j भेद्यता खोजने से रोक सकते हैं। उनमें से कुछ हैं: नेटवर्क और सर्वर फ़ायरवॉल, वेब एप्लिकेशन फ़ायरवॉल, कस्टम TCP पोर्ट, सॉफ्टवेयर/सेवा जो कम गंभीरता की घटनाओं (जैसे हमारा सामान्य http अनुरोध) को लॉग नहीं करते, स्क्रिप्ट द्वारा आवश्यक होस्टनाम के बजाय IP पते तक पहुंच, आदि…
log4j मुद्दे के विवरण के लिए हमेशा ओपन सोर्स प्रोजेक्ट या सॉफ्टवेयर के विक्रेता सूचनाओं की जांच करें।
usage: log4j-quick-scan.py [-h] [-V] -e LISTENHOST [-p PORTS] [-l LOG] target
Scan hosts with log4j+jndi doing external connections.
required arguments:
-e LISTENHOST, --listenhost LISTENHOST
Host[:port] where to monitor tcp connections. It could be the same machine where script is to be run.
optional arguments:
-h, --help show this help message and exit
-V, --version Display version and exit.
-p PORTS, --ports PORTS
Optional, comma separated list of ports on tested hosts. Default: 80,8080,443,8443
-l LOG, --log LOG Optional, append output to custom log file. Default: ./log4j-quick-scan.log
positional arguments:
target Scan target: IP network in CIDR format.