
إثبات المفهوم لثغرة Log4Shell مشتق من https://github.com/kozmer/log4j-shell-poc
هذا المستودع هو إثبات مفهوم لثغرة CVE-2021-44228.
مشتق من هذا المستودع.
في هذا المستودع قمت بإنشاء مثال لتطبيق قابل للاستغلال وعرض توضيحي لكيفية استغلاله.
قمت بتعديل السكربت البرمجي الأصلي (python script) لأتمتة توليد هذه الثغرة.
يوجد في هذا المستودع ملفا Dockerfile لسهولة الاستخدام كما يلي:
في صورة Docker هذه نقوم بتنزيل جافا jdk-8u20 من حسابي على Google Drive لأنه يتعين عليك إنشاء حساب على Oracle لتنزيل هذا.
إذا كنت لا تثق بهذا، يمكنك تعديل ملف التنزيل من Dockerfile وتنزيل JDK من هنا (تأكد من تنزيل إصدار Java SE Development Kit 8u20 لنظام لينكس).
تعمل صورة Docker هذه بنسخة معدلة من السكربت المقدم من kozmer وتقوم بما يلي:
المنافذ الافتراضية المستخدمة لذلك هي 1389 لـ JNDI LDAP و8000 لـ SimpleHttpServer و**9001** للشل العكسي!
لتجميع وتشغيل هذا، نفّذ:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
استخدم docker logs <containerID> لعرض سجلات التطبيق واستخراج المدخلات الصحيحة التي يجب توفيرها للتطبيق القابل للاستغلال.
لهذا الإثبات، افترضت عناوين IP الافتراضية المستخدمة من قبل docker (172.17.0.1/24)، يمكنك تغييرها في سكربت ./Docker-Ldap/run.sh لتناسب السيناريو الخاص بك.
في صورة Docker هذه، يتم تشغيل تطبيق ويب قابل للاستغلال يستخدم النسخة غير المصححة من Log4J 2 ويعرضها على المنفذ 8080.
كود التطبيق متاح أيضًا في ./Docker-Vuln، مع الشكر لـ kozmer.
لتجميع وتشغيل هذا، نفّذ:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
حقل اسم المستخدم هو الحقل القابل للحقن!
لقبول الشل العكسي، يجب عليك إنشاء مستمع netcat على المنفذ 9001
nc -lvnp 9001
بعد تنزيل المستودع، تأكد من تثبيت محرك docker وعدم وجود صور docker أخرى تعمل على جهازك.
config.sh لبناء الصور وتشغيلها. (يستخدم هذا السكربت صلاحيات الجذر للتشغيل، يمكنك تعديلها وفقًا لذلك).9001.localhost:8080docker logs <containerID>).