
PoC für Zip Slip in MarkUs Assignment Configuration Uploads
MarkUs ist eine Webanwendung zur Bewertung von Studierendenabgaben.
Das Hochladen von ZIP-Dateien zur Konfiguration von MarkUs-Aufgaben ist anfällig für Path Traversal (Zip Slip), was beliebige Dateischreibvorgänge und damit die Ausführung von Remote-Code ermöglicht.
Archiv-Eintragsnamen werden verwendet, um Dateisystempfade zu konstruieren, ohne zu prüfen, ob die resultierenden Pfade innerhalb des vorgesehenen Extraktionsverzeichnisses bleiben. Eine authentifizierte Lehrkraft kann ein manipuliertes Archiv mit Traversal-Sequenzen hochladen, um Dateien außerhalb dieses Verzeichnisses zu schreiben.
Die Auswirkungen hängen von den Dateisystemberechtigungen des Anwendungsprozesses ab. Das Überschreiben ausführbarer Anwendungsdateien kann zur Ausführung von Remote-Code führen.
Generieren Sie zip-slip-check.zip mit den erforderlichen Fixtures mithilfe von poc.py.
Melden Sie sich bei MarkUs als Lehrkraft an, navigieren Sie zur Assignments-Seite eines beliebigen Kurses, klicken Sie auf "Upload the configuration zip file" und übermitteln Sie das Archiv.
Starten Sie einen Listener in der Umgebung, die von der Callback-Adresse der Payload erreichbar ist:
nc -lvnp 8080 -vvv
Fügen Sie als Studierende/r Ihren öffentlichen SSH-Schlüssel zu Ihrem MarkUs-Profil hinzu und lösen Sie dann eine Git-over-SSH-Operation gegen ein beliebiges Kurs-Repository aus.
git clone ssh://markus@<host>:2222/~/csc123
MarkUs <= 2.9.0.
Behoben in Version 2.9.1.
Aktualisieren Sie auf eine unterstützte MarkUs-Version, die den Fix enthält. Die Einschränkung der Dateisystemberechtigungen des Anwendungsprozesses kann die Auswirkungen begrenzen.