
PoC для Zip Slip в загрузке конфигурации заданий MarkUs
MarkUs — это веб-приложение для проверки студенческих работ.
Загрузка ZIP-архивов с конфигурацией заданий в MarkUs уязвима к обходу путей (Zip Slip), что позволяет записывать произвольные файлы и приводит к удалённому выполнению кода.
Имена записей архива используются для построения путей в файловой системе без проверки того, что полученные пути остаются в пределах предполагаемого каталога распаковки. Аутентифицированный преподаватель может загрузить специально сформированный архив, содержащий последовательности обхода, чтобы записать файлы за пределами этого каталога.
Влияние зависит от прав доступа процесса приложения к файловой системе. Перезапись исполняемых файлов приложения может привести к удалённому выполнению кода.
Сгенерируйте zip-slip-check.zip с необходимыми фикстурами с помощью poc.py.
Войдите в MarkUs как преподаватель, перейдите на страницу Assignments любого курса, нажмите «Upload the configuration zip file» и отправьте архив.
Запустите прослушивание в окружении, доступном по адресу обратного вызова полезной нагрузки:
nc -lvnp 8080 -vvv
Как студент, добавьте свой публичный SSH-ключ в профиль MarkUs, затем инициируйте операцию Git over SSH с любым репозиторием курса.
git clone ssh://markus@<host>:2222/~/csc123
MarkUs <= 2.9.0.
Исправлено в версии 2.9.1.
Обновитесь до поддерживаемого выпуска MarkUs, содержащего исправление. Ограничение прав доступа процесса приложения к файловой системе может уменьшить влияние.