Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/ossie-git/log4shell_sentinel
ماسحات الثغرات الأمنيةأمن الحاوياتتحليل الثغرات الأمنيةالتحقيق الجنائي الرقميالاستجابة للحوادثتحليل السجلات
GitHubossie-git/log4shell_sentinel

log4shell_sentinel

ماسح ذكي لـ Log4Shell/Log4j/CVE-2021-44228

عرض المستودع
14126منذ 4 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Log4Shell Sentinel - ماسح ذكي لثغرة CVE-2021-44228

مقدمة

على الرغم من وجود أدوات ممتازة تم إصدارها لمساعدة المؤسسات على فحص بيئاتها بحثًا عن التطبيقات المعرضة للثغرة الحرجة Log4J / CVE-2021-44228، إلا أنني شعرت بأن:

  • لم تكن أي من الأدوات التي صادفتها مصممة للمحللين لتتبع اكتشاف معين طوال عملية المعالجة. يقوم Log4Shell Sentinel بإخراج اكتشافاته إلى صيغة CSV على أمل أن يقوم المحلل بعد ذلك بتقطيع الاكتشافات وتحليلها في Excel، وإضافة بعض الاكتشافات إلى قائمة تجاهل وإعادة تشغيل الفحص، ومقارنة عمليات الفحص، وإضافة بيانات إلى نتائج الفحص، وما إلى ذلك.
  • تترك الماسحات المبنية على الملفات الكثير من العمل للمحللين، خاصة في البيئات المعتمدة على الحاويات

وهكذا وُلد Log4Shell Sentinel. Log4Shell Sentinel هو ماسح يعتمد على الملفات ويتمتع ببعض الميزات الفريدة. ليس الغرض منه استبدال جميع الأدوات المتاحة الأخرى، لكنه يمكن أن يكمّلها.

الميزات

Log4Shell Sentinel هو ماسح يعتمد على الملفات. يبحث عن التطبيقات المبنية على Java عن طريق فحص النظام المستهدف بحثًا عن مكونات بالتنسيقات التالية:

نوع الملفالتفاصيل
Simple jarهذه هي الحالة التي لا يكون فيها ملف log4j-core مضمنًا.
Fat / Uber jarالملف uber jar هو ملف jar يحتوي على كل من فئاتك / حزمتك وجميع تبعيات تطبيقك (المكتبات والموارد وملفات البيانات الوصفية) داخل ملف jar واحد. هذا هو خيار النشر الأكثر استخدامًا.
WARملف war (أرشيف تطبيق الويب) هو ملف يحتوي على كود JSP وHTML وJavaScript بالإضافة إلى مكتباتك ومواردك الأخرى. هذا التنسيق أقل استخدامًا.
EARملف ear (أرشيف تطبيق المؤسسة) هو تنسيق آخر كان أكثر استخدامًا مع Jakarta EE لأغراض النشر.

ويبحث عن نسخ من ملفات log4j-core المعرضة للخطر. ثم يقوم بما يلي:

  • حساب تجزئة MD5 للمكوّن. يتيح ذلك للمحلل تحديد نفس التطبيق الذي يعمل على أجهزة / حاويات مختلفة والتعامل معها كاكتشاف واحد

  • بالنسبة للملفات التي يُحدد أنها تنتمي إلى حاوية مثل: /var/lib/docker/overlay2/192768f471818601094bf4edd96d14bfc0e2b178a04a2efd00b2231ad4e46b33/merged/app/spring-boot-application.jar، يقوم بالجزء الأصعب من العمل وهو ربط الملف بالصورة المقابلة. على سبيل المثال، يترجم ما سبق إلى الصورة التالية: ghcr.io/christophetd/log4shell-vulnerable-app:latest. وبما أن بيئات تشغيل الحاويات المختلفة تخزّن هذا الربط بطرق مختلفة، فإن هذا يمكن أن يوفر على المحلل ساعات من الإحباط. كما يتيح ذلك للمحلل التعامل مع عدد من الحاويات التي تشغّل تطبيقًا واحدًا كاكتشاف واحد.

  • يقوم بإزالة التطابقات غير المفيدة مثل التطابقات المقابلة للحاويات غير العاملة حاليًا بما في ذلك الصور المخزنة مؤقتًا. يتيح ذلك للمحلل التركيز على ما هو مهم ويوفر له مرة أخرى ساعات من العمل غير الضروري

  • يتيح للمحلل تجاهل التطابقات بناءً على:

    • تجزئة MD5
    • مسار الملف
    • صورة الحاوية

    يتيح ذلك للمحلل إزالة التطبيقات التي يعرف أنها غير معرضة للخطر أو التي تتوافق مع تطبيقات تعتمد على سطر الأوامر (CLI) لا تشكل تهديدًا. على سبيل المثال، إذا تم اكتشاف نسخة من Logstash، يمكن للمحلل اختيار تجاهلها إذا كان لا يشغّل الأداة أو يشغّلها فقط من سطر الأوامر من حين لآخر.

  • تم تحسينها للعمل مع أدوات إدارة التهيئة الخاصة بك مثل Ansible، مما يمنحك القدرة على فحص بيئتك بسرعة في دقائق

إثراء البيانات الوصفية

للحصول على تفاصيل حول إثراء البيانات الوصفية الذي أضافه Log4Shell Sentinel، راجع منشور مدونتي.

التثبيت

أسهل طريقة هي ببساطة تنزيل الملف الثنائي المُجمَّع مسبقًا.

البناء من المصدر

مرة أخرى، هذا الأمر مباشر. ومع ذلك، من المرجح أنك سترغب في بناء نسخة مُجمَّعة بشكل ثابت (statically compiled) لتجنب أي اختلافات متعلقة بـ GLIBC في بيئتك. تستخدم الأداة الوحدات التالية التي تستخدم CGO افتراضيًا:

  • os/user
  • net

لبناء نسخة مُجمَّعة بشكل ثابت تستخدم إصدارات Go من هذه المكتبات، ما عليك سوى استنساخ المستودع ثم تشغيل:

$ CGO_ENABLED=0 go build -ldflags="-s -w"
$ ldd log4shell_sentinel
        not a dynamic executable

الاستخدام

$ ./log4shell_sentinel -h
NAME:
   Log4Shell Sentinel - by Osama Elnaggar

USAGE:
   log4shell_sentinel [global options] command [command options] [arguments...]

VERSION:
   v1.0.0

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --path value, -p value       Path to search (default: ".")
   --no-banner, --nb            Suppress banner (default: false)
   --no-messages, --nm          Suppress messages except for CSV output (default: false)
   --no-header, --nh            Suppress header in CSV output (default: false)
   --imd5 value, --im value     Ignore MD5 hashes. Refer to the GitHub page for expected format
   --ipath value, --ip value    Ignore file path matches. Refer to the GitHub page for expected format
   --icimage value, --ic value  Ignore container image matches. Refer to the GitHub page for expected format
   --print-headers, --ph        Print CSV Headers only (default: false)
   --help, -h                   show help (default: false)
   --version, -v                print the version (default: false)

بشكل افتراضي، سيقوم الفحص بفحص الدليل الحالي ببساطة. على سبيل المثال:

$ ./log4shell_sentinel

░█░░░█▀█░█▀▀░█░█░█▀▀░█░█░█▀▀░█░░░█░░░░░█▀▀░█▀▀░█▀█░▀█▀░▀█▀░█▀█░█▀▀░█░░
░█░░░█░█░█░█░░▀█░▀▀█░█▀█░█▀▀░█░░░█░░░░░▀▀█░█▀▀░█░█░░█░░░█░░█░█░█▀▀░█░░
░▀▀▀░▀▀▀░▀▀▀░░░▀░▀▀▀░▀░▀░▀▀▀░▀▀▀░▀▀▀░░░▀▀▀░▀▀▀░▀░▀░░▀░░▀▀▀░▀░▀░▀▀▀░▀▀▀

- A CVE-2021-44228/CVE-2021-45046/CVE-2021-45105 Scanner
- v1.0.0
- by Osama Elnaggar

[*] WARNING: Running as non-root user.
             Non-readable files / dirs will be skipped
             Container mapping will fail

[*] Starting shallow scan ............ [DONE]
[*] Starting deep scan ............... [DONE]
[*] Calculating MD5 hashes ........... [DONE]
[*] Performing container image lookups [DONE]
[*] Processing ignore list(s) ........ [DONE]
[*] Generating output ................ [DONE]

IP,Hostname,AppName,Team,Ignore (Y/N),Comments,MD5Hash,Timestamp,Container,ContainerImage,FullPath,Version
192.168.121.121,server3,,,,,4e615cd580758b70c49ade1f79103328,2021-12-21T07:38:09Z,true,ghcr.io/christophetd/log4shell-vulnerable-app:latest,/run/containerd/io.containerd.runtime.v2.task/k8s.io/dc2c9c214809f506283c917244cd126a9b056ac7274322d12b59c9196d95dd9b/rootfs/app/spring-boot-application.jar,log4j-core-2.14.1.jar

ستحصل فورًا على تحذير إذا قمت بتشغيله كمستخدم غير root لأنه يتطلب صلاحيات root:

  • إذا كنت تخطط لفحص نظام الملفات بالكامل (موصى به)
  • إذا كنت تخطط للقيام بعمليات ربط الحاويات -> الصور (يلزم الوصول إلى خادم Docker والملفات التكوينية وما إلى ذلك)

ستظل تعمل بدون صلاحيات root ولكنها قد لا تعطيك أفضل النتائج.

فهم الاكتشافات

تبدو عينة الاكتشاف كما يلي:

IP,Hostname,AppName,Team,Ignore (Y/N),Comments,MD5Hash,Timestamp,Container,ContainerImage,FullPath,Version
192.168.121.121,server3,,,,,4e615cd580758b70c49ade1f79103328,2021-12-21T07:38:09Z,true,ghcr.io/christophetd/log4shell-vulnerable-app:latest,/run/containerd/io.containerd.runtime.v2.task/k8s.io/dc2c9c214809f506283c917244cd126a9b056ac7274322d12b59c9196d95dd9b/rootfs/app/spring-boot-application.jar,log4j-core-2.14.1.jar

بعض الحقول تُترك فارغة عن قصد ليقوم المحلل بتعبئتها في Excel وما إلى ذلك. يوضح الجدول التالي وصفًا مختصرًا لكل حقل:

الحقلمثالالوصف
IP192.168.121.121إذا كان الجهاز يحتوي على عدة عناوين IP، تتم إضافة عنوان IP الأساسي
Hostnameserver3اسم المضيف
AppNameيُترك للمستخدم لإكماله بعد انتهاء الفحص
Teamيُترك للمستخدم لإكماله بعد انتهاء الفحص
Ignore (Y/N)يُترك للمستخدم لإكماله بعد انتهاء الفحص
Commentيُترك للمستخدم لإكماله بعد انتهاء الفحص
MD5Hash4e615cd580758b70c49ade1f79103328بصمة فريدة للتطبيق
Timestamp2021-12-21T07:38:09Zطابع زمني عند إجراء الفحص. هذا مفيد إذا كنت تريد تجميع عمليات فحص متعددة لنفس المضيف
Containertrueصحيح = هذه حاوية
ContainerImageghcr.io/christophetd/log4shell-vulnerable-app:latestإذا تم اكتشاف حاوية، فهذه هي الصورة المقابلة لها
FullPath/run/containerd/io.containerd.
runtime.v2.task/k8s.io/.../spring-boot-application.jar
المسار الكامل للاكتشاف. في هذا المثال، ملف JAR المعرض للخطر جزء من ملف fat / uber jar
Versionlog4j-core-2.14.1.jarإصدار lo4j-core الذي تم اكتشافه
تنزيل الأداة