
CVE 2021-44228 إثبات المفهوم. Log4Shell هو هجوم على الخوادم يستخدم إصدارات ضعيفة من Log4J.
أباتشي لوج4ج2 من الإصدار 2.0-beta9 إلى 2.15.0 (باستثناء الإصدارات 2.12.2 و 2.12.3 و 2.3.1)
ميزات JNDI المستخدمة في التهيئة ورسائل السجل والمعلمات لا تحمي ضد نقاط النهاية LDAP وغيرها من نقاط النهاية المرتبطة بـ JNDI التي يتحكم فيها المهاجم. يمكن للمهاجم الذي يستطيع التحكم في رسائل السجل أو معلمات رسائل السجل تنفيذ كود عشوائي تم تحميله من خوادم LDAP عندما يكون استبدال البحث عن الرسائل مفعلًا. منذ الإصدار log4j 2.15.0، تم تعطيل هذا السلوك افتراضيًا. ومنذ الإصدار 2.16.0 (مع 2.12.2 و 2.12.3 و 2.3.1)، تمت إزالة هذه الوظيفة بالكامل. لاحظ أن هذه الثغرة خاصة بـ log4j-core ولا تؤثر على log4net أو log4cxx أو مشاريع Apache Logging Services الأخرى.
ونتيجة لذلك، تم تقييمها بنتيجة CVSS v3 تبلغ 10.0 (الحد الأقصى للنتيجة).
لحسن الحظ أن هذا هجوم من نوع 0-day. لذا قام المطورون بإصلاحه في 0-day.
مشروع أباتشي Log4j هو من بين أكثر قطع البرمجيات مفتوحة المصدر استخدامًا، حيث يوفر قدرات تسجيل لتطبيقات Java.
أولاً، يستخدم هذا البرهان العملي:
في http_server ستجد ملفين: MyExploit.java وملف .class المترجم MyExploit.class
💡تذكير: javac namefile.java لتجميع كلاس Java :)
يمكنك تشغيل خادم HTTP بسرعة باستخدام الأمر: python -m http.server [PORT] في هذه الحالة
مستودع marshalsec التفاصيل هنا
مستودع christophetd التفاصيل هنا
عادةً ما يكون الحقل الهدف في رأس الطلب هو User-agent، في هذا البرهان العملي سيتم استخدام X-Api-Version
يقوم هذا البرهان العملي بتنفيذ أمر تنفيذ على الخادم الضعيف من أجل إنشاء ملف باسم "pwned_by_pierpaolosestito_dev" في مجلد tmp. يحتوي MyExploit.java أيضًا على حمولة خبيثة تسمح للمهاجم بتنفيذ كود عكسي والحصول على شل عكسي.
💡بعض النصائح: إذا قمت بتشغيل docker exec [container_id] ifconfig يمكنك ملاحظة أنه مُشغل ليس في نطاقك المحلي الفرعي. لتنفيذ RCE يمكنك تغيير IP داخل MyExploit.java الذي يحتوي على سلسلة أمر RCE. منذ اللحظة التي لا يستطيع فيها مُشغل Docker الاتصال بك على IP خاص، تحتاج إلى IP عام ويمكنك الحصول عليه باستخدام إعادة توجيه المنفذ