
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 प्रोफ़ाइल में जोड़ें, फिर किसी भी कोर्स रिपॉज़िटरी के विरुद्ध SSH पर Git ऑपरेशन ट्रिगर करें।
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