
سكربت Python3 لفحص الأجهزة المعرضة لثغرة CVE-2021-44228 (Log4shell).

يقوم هذا السكربت المكتوب بلغة Python3 بالبحث عن الخوادم المعرّضة للثغرة CVE-2021-44228، المعروفة أيضًا باسم Log4Shell، وهي ثغرة بالغة الخطورة اكتُشفت في مكتبة تسجيل Log4j2 الخاصة بـ Java.
لا يعتمد السكربت على خوادم DNS خارجية لتسجيل الوصول من أجل التحقق من الأهداف المعرّضة للخطر وتأكيد إصابتها: فعند تشغيله، يتم إنشاء خيط (thread) جديد يستمع على جميع الواجهات والمنفذ 55555 (ويمكن تغييره باستخدام ملف .env أو متغيرات البيئة)؛ بانتظار اتصالات الاستدعاء (callback) القادمة من الأجهزة المعرّضة، ثم يقوم بإخطار الخيط الرئيسي عبر قائمة انتظار Python Queue. ضع في اعتبارك أنك قد تحتاج إلى إضافة قواعد جدار حماية (و/أو قواعد إعادة توجيه المنافذ) للسماح بالاتصالات الواردة إلى عنوان IP والمنفذ المستمعين.
من أجل زيادة فرص تفعيل الثغرة، تأخذ الأداة عنوان URL كوسيط (أو قائمة عناوين URL)، وتبحث عن أي نموذج (form) مضمّن في العناوين المقدَّمة. بعد ذلك تحاول استغلال الثغرة باستخدام كل معامل (parameter) موجود في كل نموذج يتم العثور عليه (عبر طلبات GET و POST). هذا هو السلوك الافتراضي، لكن يمكن تعطيله باستخدام الخيار --skip-forms (وفي هذه الحالة سيتم تنفيذ طلب واحد فقط وسيتم وضع الحمولة داخل عدد قليل من حقول الترويسة).
أيضًا، تُستخدم الترويسات المحددة مسبقًا التالية لاختبار ما إذا كانت الأهداف معرّضة للثغرة:
يمكن إضافة ترويسات مخصصة عبر خيار سطر الأوامر.
للحصول على وصف كامل للاستخدام، انظر القسم أدناه.
python3 log4j_checker.py -h
usage: log4j_checker.py [-h] [--url URL] [--headers HEADERS [HEADERS ...]] [--urls URLS] [--skip-forms]
optional arguments:
-h, --help show this help message and exit
--url URL Single url you want to test (valid url is http(s)://host:[port]/[path])
--headers HEADERS [HEADERS ...]
Custom headers you want to try (space separated)
--urls URLS A file containing 1 url per line
--skip-forms Skip forms check (only perform 1 request)
صُممت هذه الأداة لاختبار أنظمتك الخاصة.
ملاحظة مهمة: لا تضمن هذه الأداة أن خادمك غير معرّض للثغرة حتى لو كانت النتيجة سلبية. والسبب أن تطبيقك قد يسجّل الحمولة الخبيثة في مكان آخر، ومن المستحيل تغطية جميع الحالات. لذا فإن أفضل طريقة للتحقق مما إذا كنت معرّضًا للخطر هي البحث عن الحزم المعرّضة (مثل log4j-core*.jar و log4j-api*.jar) عبر نظام الملفات بالكامل.