
PoC para Zip Slip en las cargas de configuración de tareas de MarkUs
MarkUs es una aplicación web para calificar tareas de estudiantes.
Las cargas de archivos ZIP de configuración de tareas de MarkUs son vulnerables a salto de ruta (Zip Slip), lo que permite la escritura arbitraria de archivos y posibilita la ejecución remota de código.
Los nombres de las entradas del archivo se utilizan para construir rutas del sistema de archivos sin comprobar que las rutas resultantes permanezcan dentro del directorio de extracción previsto. Un instructor autenticado puede cargar un archivo manipulado que contenga secuencias de salto de ruta para escribir archivos fuera de ese directorio.
El impacto depende de los permisos del sistema de archivos del proceso de la aplicación. Sobrescribir archivos ejecutables de la aplicación puede provocar la ejecución remota de código.
Genere zip-slip-check.zip con los fixtures necesarios usando poc.py.
Inicie sesión en MarkUs como instructor, navegue a la página Assignments de cualquier curso, haga clic en "Upload the configuration zip file" y envíe el archivo.
Inicie un listener en el entorno accesible por la dirección de callback del payload:
nc -lvnp 8080 -vvv
Como estudiante, añada su clave pública SSH a su perfil de MarkUs y, a continuación, active una operación Git sobre SSH contra cualquier repositorio del curso.
git clone ssh://markus@<host>:2222/~/csc123
MarkUs <= 2.9.0.
Corregido en la versión 2.9.1.
Actualice a una versión de MarkUs compatible que contenga la corrección. Restringir los permisos del sistema de archivos del proceso de la aplicación puede limitar el impacto.
https://github.com/MarkUsProject/Markus/security/advisories/GHSA-mccg-p332-252h