
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 di file ZIP di configurazione dei compiti di MarkUs è vulnerabile a path traversal (Zip Slip), consentendo la scrittura arbitraria di file e abilitando l'esecuzione remota di codice.
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. La sovrascrittura di file eseguibili dell'applicazione può portare all'esecuzione remota di codice.
Genera zip-slip-check.zip con i fixture richiesti usando poc.py.
Accedi a MarkUs come istruttore, vai alla pagina Assignments di qualsiasi corso, fai clic 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, quindi 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.
https://github.com/MarkUsProject/Markus/security/advisories/GHSA-mccg-p332-252h