MarkUs 是一个用于批改学生作业的 Web 应用程序。
MarkUs 作业配置 ZIP 上传存在路径遍历(Zip Slip)漏洞,可导致任意文件写入,进而实现远程代码执行。
归档条目名称被用于构造文件系统路径,而未检查生成的路径是否仍位于预期的解压目录内。经过身份验证的教师可以上传包含遍历序列的恶意归档,从而在该目录之外写入文件。
影响取决于应用程序进程的文件系统权限。覆盖可执行的应用程序文件可能导致远程代码执行。
使用 poc.py 生成包含所需测试数据的 zip-slip-check.zip。
以教师身份登录 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 版本。 限制应用程序进程的文件系统权限可以减轻影响。
https://github.com/MarkUsProject/Markus/security/advisories/GHSA-mccg-p332-252h