
تتيح لك هذه الأداة التحقق مما إذا كان تطبيق ويب Java بسيطًا عرضةً لثغرة CVE-2021-44228 وذلك بالنسبة لإصدار يقدمه المستخدم من Java وإصدار من Log4J.
يمكنك أيضًا [اختياريًا] تطبيق أحد الإجراءات الوقائية المحددة مسبقًا.
يستخدم مختبر المحاكاة الذي يتم تشغيله بواسطة log4shell_validator.py أداة docker-compose لمحاكاة استغلال ثغرة log4j والحصول على تنفيذ أوامر عن بُعد (RCE) على الجهاز المعرّض للثغرة.
أولًا، يجب بناء بعض صور docker. النص البرمجي ./build_images.sh يتكفل بذلك.
تتم محاكاة الهجوم بالطريقة التالية:
/2021-44228-via-message، فإنه يسجل دائمًا حقل ترويسة User-Agent. الكود الخاص بهذا التطبيق متاح تحت ./poc_template../exploit.sh الذي يرسل حمولة (payload) إلى التطبيق المعرّض للثغرة.cd marshalsec/ ;mvn clean package -DskipTests ;cd -./build-images.shpython log4shell_validator.py --java-version 8 --log4j-version 2.12.1~/workspace/CVE-2021-44228-playground$ python log4shell_validator.py --help
usage: log4shell_validator.py [-h] [--java-version JAVA_VERSION] --log4j-version LOG4J_VERSION [--no-cleanup] [--disable-trust-url] [--remove-jndi-lookup-class] [--disable-message-lookup] [--debug]
[--exploit-via-thread-context]
log4j-vulnerability-tester
optional arguments:
-h, --help show this help message and exit
--java-version JAVA_VERSION
version of java to be used
--log4j-version LOG4J_VERSION
version of log4j to be used
--no-cleanup Don't delete used containers.
--disable-trust-url Disable the LDAP trustURLCodebase setting on the victim app
--remove-jndi-lookup-class
Remove the JNDI Lookup class from the log4j jar file
--disable-message-lookup
Disable the JNDI message lookup in the victim app's JVM
--debug Display all container's logs
--exploit-via-thread-context
By sending the payload to an HTTP handler which makes use of Custom logging with ThreadContext, attempt to bypass the no-message-lookup mitigation
تم اختبار هذا المُتحقق (validator) مع عدة تركيبات من Java7/8 وإصدارات مختلفة من Log4J2، ولمزيد من الأمثلة يرجى الاطلاع على خط أنابيب الاختبارات الموسعة في تبويب github actions.
حاليًا، تم تنفيذ الإجراءات الوقائية التالية:
com.sun.jndi.ldap.object.trustURLCodebase إلى False.-Dlog4j2.formatMsgNoLookups=Trueبالإضافة إلى ذلك، تمت إضافة علم جديد لاختبار ناقل استغلال يمكنه تجاوز تعطيل message lookups: --exploit-via-thread-context
تم إنشاء هذا البرنامج لأغراض البحث وتطوير تقنيات الوقاية الفعالة فقط، وليس المقصود استخدامه لمهاجمة الأنظمة إلا في الحالات المصرح بها صراحةً. القائمون على المشروع غير مسؤولين عن إساءة استخدام البرنامج. استخدمه بمسؤولية.