
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 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 criado maliciosamente contendo sequências de travessia para escrever arquivos fora desse diretório.
O impacto depende das permissões do sistema de arquivos do processo da aplicação. Sobrescrever 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 alcançável pelo endereço de callback do payload:
nc -lvnp 8080 -vvv
Como estudante, adicione sua chave pública SSH ao seu perfil do MarkUs e, em seguida, dispare uma operação Git over SSH contra qualquer repositório de 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 do sistema de arquivos do processo da aplicação pode limitar o impacto.