
PoC per Zip Slip nei caricamenti della configurazione delle assegnazioni di MarkUs
MarkUs è un'applicazione web per la valutazione dei compiti degli studenti.
Il caricamento dei file ZIP di configurazione dei compiti di MarkUs è vulnerabile a path traversal (Zip Slip), consentendo scritture arbitrarie di file e abilitando l'esecuzione di codice in remoto.
I nomi delle voci dell'archivio vengono utilizzati per costruire percorsi nel filesystem senza verificare che i percorsi risultanti rimangano all'interno della directory di estrazione prevista. Un istruttore autenticato può caricare un archivio appositamente creato contenente sequenze di traversal per scrivere file al di fuori di tale directory.
L'impatto dipende dai permessi del filesystem del processo dell'applicazione. Sovrascrivere file eseguibili dell'applicazione può portare all'esecuzione di codice in remoto.
Genera zip-slip-check.zip con i fixture richiesti usando poc.py.
Accedi a MarkUs come istruttore, vai alla pagina Assignments di qualsiasi corso, clicca su "Upload the configuration zip file" e invia l'archivio.
Avvia un listener nell'ambiente raggiungibile dall'indirizzo di callback del payload:
nc -lvnp 8080 -vvv
Come studente, aggiungi la tua chiave SSH pubblica al tuo profilo MarkUs, poi attiva un'operazione Git over SSH verso qualsiasi repository del corso.
git clone ssh://markus@<host>:2222/~/csc123
MarkUs <= 2.9.0.
Corretto nella versione 2.9.1.
Aggiorna a una release di MarkUs supportata che contenga la correzione. Limitare i permessi del filesystem del processo dell'applicazione può ridurre l'impatto.