
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 d'archives ZIP de configuration de devoirs dans MarkUs est vulnérable à une traversée de répertoires (Zip Slip), permettant l'écriture arbitraire de fichiers et ouvrant la voie à une 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 malveillante contenant des séquences de traversée afin d'é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.
Lancez 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.
https://github.com/MarkUsProject/Markus/security/advisories/GHSA-mccg-p332-252h