
نموذج إثبات مفهوم لثغرة Zip Slip في تحميلات إعدادات الواجبات في MarkUs
MarkUs هو تطبيق ويب لتصحيح وتقييم واجبات الطلاب.
تحميل ملفات ZIP الخاصة بإعدادات الواجبات في MarkUs معرّض لثغرة اجتياز المسارات (Zip Slip)، مما يسمح بكتابة ملفات عشوائية ويمكّن من تنفيذ تعليمات برمجية عن بُعد.
تُستخدم أسماء مدخلات الأرشيف لبناء مسارات نظام الملفات دون التحقق من بقاء المسارات الناتجة داخل دليل الاستخراج المقصود. يمكن لمدرّس مُصادَق عليه تحميل أرشيف مُصمَّم يحتوي على تسلسلات اجتياز لكتابة ملفات خارج ذلك الدليل.
يعتمد التأثير على أذونات نظام الملفات الخاصة بعملية التطبيق. يمكن أن يؤدي استبدال ملفات التطبيق القابلة للتنفيذ إلى تنفيذ تعليمات برمجية عن بُعد.
أنشئ zip-slip-check.zip مع الملفات المطلوبة باستخدام poc.py.
سجّل الدخول إلى MarkUs بصفتك مدرّسًا، وانتقل إلى صفحة Assignments لأي مقرر، وانقر على "Upload the configuration zip file" وأرسل الأرشيف.
ابدأ مستمعًا في البيئة التي يمكن الوصول إليها من عنوان الاستدعاء العكسي الخاص بالحمولة:
nc -lvnp 8080 -vvv
بصفتك طالبًا، أضف مفتاح SSH العام الخاص بك إلى ملفك الشخصي في MarkUs، ثم شغّل عملية Git عبر SSH على أي مستودع مقرر.
git clone ssh://markus@<host>:2222/~/csc123
MarkUs <= 2.9.0.
تم إصلاحها في الإصدار 2.9.1.
قم بالترقية إلى إصدار MarkUs مدعوم يتضمن الإصلاح. يمكن أن يحدّ تقييد أذونات نظام الملفات لعملية التطبيق من التأثير.
https://github.com/MarkUsProject/Markus/security/advisories/GHSA-mccg-p332-252h