
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 das Schreiben beliebiger Dateien ermöglicht und die Ausführung von Remote-Code erlaubt.
Die Namen der Archiveinträge werden zur Konstruktion von Dateisystempfaden verwendet, ohne zu prüfen, ob die resultierenden Pfade innerhalb des vorgesehenen Entpackungsverzeichnisses bleiben. Eine authentifizierte Lehrkraft kann ein manipuliertes Archiv mit Traversal-Sequenzen hochladen, um Dateien außerhalb dieses Verzeichnisses zu schreiben.
Die Auswirkung hängt von den Dateisystemberechtigungen des Anwendungsprozesses ab. Das Überschreiben ausführbarer Anwendungsdateien kann zur Ausführung von Remote-Code führen.
Erzeugen Sie zip-slip-check.zip mit den erforderlichen Fixtures unter Verwendung von poc.py.
Melden Sie sich als Lehrkraft bei MarkUs an, navigieren Sie zur Assignments-Seite eines beliebigen Kurses, klicken Sie auf „Upload the configuration zip file“ und reichen Sie das Archiv ein.
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 bzw. Studierender 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.
https://github.com/MarkUsProject/Markus/security/advisories/GHSA-mccg-p332-252h