
PoC para Zip Slip em Uploads de Configuração de Tarefas do MarkUs
MarkUs é uma aplicação web para avaliação de trabalhos de estudantes.
O upload de arquivos ZIP de configuração de tarefas do MarkUs é vulnerável a path traversal (Zip Slip), permitindo a escrita arbitrária de arquivos e possibilitando a execução remota de código.
Os nomes das entradas do arquivo são usados para construir caminhos no sistema de arquivos sem verificar se os caminhos resultantes permanecem dentro do diretório de extração pretendido. Um instrutor autenticado pode enviar um arquivo manipulado contendo sequências de traversal para escrever arquivos fora desse diretório.
O impacto depende das permissões de sistema de arquivos do processo da aplicação. A sobrescrita de arquivos executáveis da aplicação pode levar à execução remota de código.
Gere zip-slip-check.zip com os fixtures necessários usando poc.py.
Faça login no MarkUs como instrutor, navegue até a página Assignments de qualquer curso, clique em "Upload the configuration zip file" e envie o arquivo.
Inicie um listener no ambiente acessível pelo endereço de callback do payload:
nc -lvnp 8080 -vvv
Como estudante, adicione sua chave SSH pública ao seu perfil do MarkUs e, em seguida, dispare uma operação Git over SSH contra qualquer repositório do curso.
git clone ssh://markus@<host>:2222/~/csc123
MarkUs <= 2.9.0.
Corrigido na versão 2.9.1.
Atualize para uma versão suportada do MarkUs que contenha a correção. Restringir as permissões de sistema de arquivos do processo da aplicação pode limitar o impacto.
https://github.com/MarkUsProject/Markus/security/advisories/GHSA-mccg-p332-252h