
PoC pour Zip Slip dans les téléversements de configuration de devoirs MarkUs
MarkUs est une application web de notation des devoirs des étudiants.
Le téléversement de fichiers ZIP de configuration d'affectation de MarkUs est vulnérable à une traversée de chemin (Zip Slip), permettant l'écriture arbitraire de fichiers et l'exécution de code à distance.
Les noms des entrées d'archive sont utilisés pour construire des chemins de système de fichiers sans vérifier que les chemins résultants restent dans le répertoire d'extraction prévu. Un instructeur authentifié peut téléverser une archive conçue de manière malveillante contenant des séquences de traversée pour écrire des fichiers en dehors de ce répertoire.
L'impact dépend des permissions du système de fichiers du processus de l'application. L'écrasement de fichiers exécutables de l'application peut conduire à une exécution de code à distance.
Générez zip-slip-check.zip avec les fixtures requises à l'aide de poc.py.
Connectez-vous à MarkUs en tant qu'instructeur, accédez à la page Assignments de n'importe quel cours, cliquez sur « Upload the configuration zip file » et soumettez l'archive.
Démarrez un écouteur dans l'environnement joignable par l'adresse de rappel de la charge utile :
nc -lvnp 8080 -vvv
En tant qu'étudiant, ajoutez votre clé SSH publique à votre profil MarkUs, puis déclenchez une opération Git over SSH contre n'importe quel dépôt de cours.
git clone ssh://markus@<host>:2222/~/csc123
MarkUs <= 2.9.0.
Corrigé dans la version 2.9.1.
Mettez à niveau vers une version de MarkUs prise en charge contenant le correctif. Restreindre les permissions du système de fichiers du processus de l'application peut limiter l'impact.