
نموذج إثبات مفهوم لثغرة Zip Slip في تحميلات إعدادات الواجبات في MarkUs
MarkUs هو تطبيق ويب لتصحيح واجبات الطلاب.
تحميل ملفات ZIP الخاصة بإعدادات الواجبات في MarkUs معرّض لثغرة اجتياز المسار (Zip Slip)، مما يسمح بكتابة ملفات عشوائية وتمكين تنفيذ التعليمات البرمجية عن بُعد.
تُستخدم أسماء مدخلات الأرشيف لبناء مسارات نظام الملفات دون التحقق من بقاء المسارات الناتجة داخل دليل الاستخراج المقصود. يمكن لمدرّس مُصادَق عليه تحميل أرشيف مُصمَّم يحتوي على تسلسلات اجتياز لكتابة ملفات خارج ذلك الدليل.
يعتمد التأثير على أذونات نظام الملفات لعملية التطبيق. يمكن أن تؤدي الكتابة فوق ملفات التطبيق القابلة للتنفيذ إلى تنفيذ التعليمات البرمجية عن بُعد.
أنشئ zip-slip-check.zip مع الملفات المطلوبة باستخدام poc.py.
سجّل الدخول إلى MarkUs كمدرّس، وانتقل إلى صفحة الواجبات في أي مقرر، وانقر على "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 مدعوم يحتوي على الإصلاح. يمكن أن يؤدي تقييد أذونات نظام الملفات لعملية التطبيق إلى الحد من التأثير.