
MarkUs Assignment Configuration Uploads में Zip Slip के लिए PoC
MarkUs छात्रों के असाइनमेंट को ग्रेड करने के लिए एक वेब एप्लिकेशन है।
MarkUs असाइनमेंट कॉन्फ़िगरेशन ZIP अपलोड पाथ ट्रैवर्सल (Zip Slip) के प्रति संवेदनशील हैं, जिससे मनमानी फ़ाइल लेखन और रिमोट कोड निष्पादन संभव हो जाता है।
संग्रह प्रविष्टि नामों का उपयोग फ़ाइलसिस्टम पाथ बनाने के लिए किया जाता है, बिना यह जाँचे कि परिणामी पाथ इच्छित निष्कर्षण निर्देशिका के भीतर ही रहते हैं। एक प्रमाणित प्रशिक्षक ट्रैवर्सल अनुक्रमों वाला एक तैयार किया गया संग्रह अपलोड कर सकता है ताकि उस निर्देशिका के बाहर फ़ाइलें लिखी जा सकें।
प्रभाव एप्लिकेशन प्रक्रिया की फ़ाइलसिस्टम अनुमतियों पर निर्भर करता है। निष्पादन योग्य एप्लिकेशन फ़ाइलों को अधिलेखित करने से रिमोट कोड निष्पादन हो सकता है।
poc.py का उपयोग करके आवश्यक फ़िक्स्चर के साथ zip-slip-check.zip जनरेट करें।
एक प्रशिक्षक के रूप में MarkUs में लॉग इन करें, किसी भी कोर्स के Assignments पेज पर जाएँ, "Upload the configuration zip file" पर क्लिक करें और संग्रह सबमिट करें।
पेलोड के कॉलबैक पते से पहुँचने योग्य वातावरण में एक लिसनर शुरू करें:
nc -lvnp 8080 -vvv
एक छात्र के रूप में, अपनी सार्वजनिक SSH कुंजी अपने MarkUs प्रोफ़ाइल में जोड़ें, फिर किसी भी कोर्स रिपॉज़िटरी के विरुद्ध Git over SSH ऑपरेशन ट्रिगर करें।
git clone ssh://markus@<host>:2222/~/csc123
MarkUs <= 2.9.0.
संस्करण 2.9.1 में ठीक किया गया।
किसी समर्थित MarkUs रिलीज़ में अपग्रेड करें जिसमें फ़िक्स शामिल हो। एप्लिकेशन प्रक्रिया की फ़ाइलसिस्टम अनुमतियों को प्रतिबंधित करने से प्रभाव सीमित किया जा सकता है।