
استغلال Python لثغرة CVE-2022-22965 (Spring4Shell) RCE في Java Spring Core. يقوم بحقن webshell من نوع JSP عبر تكوين سجلات Tomcat لتنفيذ أوامر عن بُعد على الخوادم الضعيفة.
الثغرة CVE-2022-22965، المعروفة باسم Spring4Shell، هي ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) في إطار عمل Java Spring Core، موجودة في الإصدارات الأقدم من 5.3.18 و5.2.20. تسمح هذه الثغرة للمهاجم بحقن تعليمات برمجية وتنفيذها عن بُعد على خادم ضعيف من خلال استغلال سوء تكوين سجلات Tomcat. تم اكتشافها في مارس 2022 وتؤثر على تطبيقات activeMQ وSpring MVC وSpring WebFlux التي تعمل بإصدار JDK >= 9.

نتأكد أولاً إذا كان لدينا إصدار JDK >= 9، وإلا نقوم بتفعيله:

المتطلبات الأساسية ✔ الوحدات requests و BeautifulSoup ضرورية لعمل الأداة. نقوم بتثبيتها باستخدام:
pip3 install bs4
pip3 install requests
مسح الشبكة

هنا، لدينا خدمة activeQM بالإصدار 5.17.3 قيد الاستماع.
في استراتيجيتنا لاستغلال الثغرة، سنستخدم سكربت Python مُطور باسم spring4shell.py المرفق بهذا المشروع.
هدف هذا السكربت: يسمح هذا السكربت Python باستغلال الثغرة CVE-2022-22965 عن طريق تعديل إعدادات تسجيل Tomcat لحقن webshell في ملفات السجلات، مما يتيح تنفيذ أوامر عن بُعد على الخادم المخترق.
شرح كود Python
إعدادات مخرجات الطرفية:
تقوم الفئة settings بتكييف العرض في الطرفية بناءً على الخيارات المختارة، مع ألوان لتمييز رسائل المعلومات والتحذير والخطأ.
إنشاء المتغيرات العشوائية:
تقوم الدالتان filename() و password() بإنشاء سلاسل سداسية عشرية عشوائية لتأمين اسم الملف وكلمة مرور webshell.
استغلال الثغرة:
يرسل السكربت طلبات لتعديل إعدادات تسجيل Tomcat، عن طريق حقن أجزاء من كود JSP عبر السجلات. بتكوين السجلات للكتابة في الدليل webapps/ROOT، يصبح كل إدخال قابلًا للتفسير ككود JSP.
يعمل ملف السجل المحقون بعد ذلك كـ webshell يمكن الوصول إليه عبر متصفح لتنفيذ الأوامر.
التفاعل مع webshell:
تفتح الفئة terminal واجهة تفاعلية تسمح بإرسال الأوامر إلى الخادم المخترق. يتم إرسال الأوامر كمعامل cmd، ويتم عرض الردود في الطرفية.
بعد تنفيذ السكربت، يتم توفير رابط إلى webshell: عبر الأمر:
python3 spring4shell.py http://172.17.0.1

نحصل على وصول مباشر إلى شل خادم activemq الخاص بنا لتنفيذ أي أوامر نرغب بها.
نهاية الاستغلال !!!