
एक उपकरण जो यह जांचने के लिए एक परीक्षण चलाता है कि आपके एप्लिकेशन में से कोई log4j में हाल की कमजोरियों से प्रभावित है या नहीं: CVE-2021-44228 और CVE-2021-45046
log4shell.tools एक उपकरण है जो आपको यह जांचने के लिए एक परीक्षण चलाने की अनुमति देता है कि आपका कोई एप्लिकेशन log4j में हाल ही में हुई कमज़ोरियों से प्रभावित है या नहीं: CVE-2021-44228 और CVE-2021-45046।
यह वह कोड है जो https://log4shell.alexbakker.me को चलाता है। यदि आप कोड का निरीक्षण करना चाहते हैं या अपने स्वयं के वातावरण में एक इंस्टेंस चलाना चाहते हैं, तो आप सही जगह पर आए हैं।
यह उपकरण आपके लिए परीक्षण करने के लिए एक अद्वितीय आईडी उत्पन्न करता है। स्टार्ट पर क्लिक करने के बाद, हम आपके लिए एक टेक्स्ट तैयार करेंगे जो कुछ इस तरह दिखता है: ${jndi:ldap://*.dns.log4shell.tools:12345/*}। इसे कॉपी करें और जहाँ भी आपको संदेह हो कि यह log4j के माध्यम से पास हो सकता है, वहाँ पेस्ट करें। उदाहरण के लिए: खोज बक्से, फ़ॉर्म फ़ील्ड या HTTP हेडर।
जब log4j का एक पुराना संस्करण इस स्ट्रिंग को देखता है, तो यह *.dns.log4shell.tools का आईपी पता प्राप्त करने के लिए DNS लुकअप करेगा। यदि ऐसा होता है, तो इसे सूचना रिसाव के प्रति संवेदनशीलता का पहला संकेत माना जाता है। इसके बाद, यह log4shell.tools:12345 पर एक LDAP खोज अनुरोध का प्रयास करेगा। उपकरण एक जावा क्लास विवरण के साथ प्रतिक्रिया करता है, साथ ही इसे प्राप्त करने के लिए एक URL भी देता है। log4j क्लास फ़ाइल को लाने का भी प्रयास कर सकता है। उपकरण 404 लौटाएगा और परीक्षण समाप्त करेगा।

इस उपकरण का परीक्षण Go 1.16 के साथ किया गया था। सुनिश्चित करें कि यह (या Go का एक नया संस्करण) स्थापित है और निम्न कमांड चलाएँ:
go install github.com/alexbakker/log4shell-tools/cmd/log4shell-tools-server
बाइनरी $GOPATH/bin में उपलब्ध होगी
चूंकि यह उपकरण एक एकल बाइनरी में कंपाइल होता है, आपको बस इसे चलाना है और यह log4shell.tools का एक इंस्टेंस सेल्फ-होस्ट करना शुरू कर देगा। इसे आपके नेटवर्क की अन्य मशीनों के लिए सुलभ बनाने के लिए, आपको कुछ फ़्लैग पास करने होंगे ताकि उपकरण केवल लूपबैक इंटरफ़ेस पर न सुनें। यदि आप इसे इंटरनेट पर एक्सपोज़ कर रहे हैं, तो आप शायद HTTP सर्वर के सामने एक रिवर्स प्रॉक्सी भी रखना चाहेंगे। फिलहाल DNS विकल्पों को अनदेखा करें, सरल आंतरिक परिनियोजन के लिए उनकी आवश्यकता नहीं है।
उपलब्ध फ़्लैग की पूरी सूची के लिए, log4shell-tools-server -h चलाएँ:
Usage of ./log4shell-tools-server:
This tool only listens on 127.0.0.1 by default. Pass the flags below to customize for your environment.
-dns-a string
the IPv4 address to respond with to any A record queries for 'dns-zone' (default "127.0.0.1")
-dns-aaaa string
the IPv6 address to respond with to any AAAA record queries for 'dns-zone' (default "::1")
-dns-addr string
listening address for the DNS server (default "127.0.0.1:12346")
-dns-enable
enable the DNS server
-dns-zone string
DNS zone that is forwarded to the tool's DNS server (example: "dns.log4shell.tools")
-http-addr string
listening address for the HTTP server (default "127.0.0.1:8001")
-http-addr-external string
address where the HTTP server can be reached externally (default "127.0.0.1:8001")
-ldap-addr string
listening address for the LDAP server (default "127.0.0.1:12345")
-ldap-addr-external string
address where the LDAP server can be reached externally (default "127.0.0.1:12345")
-ldap-http-proto string
the HTTP protocol to use in the payload URL that the LDAP server responds with (default "http")
-storage string
storage connection URI (either memory:// or a postgres:// URI (default "memory://")
-test-timeout int
test timeout in minutes (default 30)
यह उपकरण डिफ़ॉल्ट रूप से अपने इन-मेमोरी स्टोरेज बैकएंड का उपयोग करता है। यदि आपको पुनरारंभ होने पर परीक्षण परिणामों को स्थायी रखने की आवश्यकता है, तो आप इसके बजाय Postgres बैकएंड का उपयोग करना चाह सकते हैं।
DNS सर्वर डिफ़ॉल्ट रूप से अक्षम है, क्योंकि इसके कॉन्फ़िगरेशन विकल्प वर्तमान में https://log4shell.alexbakker.me पर सेटअप के लिए बहुत विशिष्ट हैं। यदि आप इन्हें और अधिक सामान्य बनाने में मदद करना चाहते हैं तो मुझे बताएं।