Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
vfs-quote-breakout — VFS для Git ab95cf51 — высокий — удалённый — RCE — core.virtualfilesystem обёртка одинарными кавычками | Kitploit
Инструменты/GitHubGitHub/abraxas/vfs-quote-breakout
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеКомандование и УправлениеСтатьи и ИсследованияРазработка Полезной Нагрузки
GitHubabraxas/vfs-quote-breakout

vfs-quote-breakout

VFS для Git ab95cf51 — высокий — удалённый — RCE — core.virtualfilesystem обёртка одинарными кавычками

Репозиторий
84 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Abraxas Labs - vfs-quote-breakout

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  vfs-quote-breakout

vfs-quote-breakout

Класс: RCE Доступ: Удалённый

VFS for Git master ab95cf51 (тег v2.0.26259.1) — Microsoft

CloneVerb.GetCloneRoot берёт последний сегмент пути URL в качестве папки enlistment по умолчанию и не удаляет кавычку. Затем RequiredGitConfig записывает core.virtualfilesystem как наивный путь к хуку в одинарных кавычках. microsoft/git выполняет это значение с use_shell=1. Комментарий в продукте даже упоминает bash.

URL клонирования, последний сегмент которого — pwn';witness;', превращается в 'C:/temp/pwn';witness;'/src/.git/hooks/GVFS.VirtualFileSystemHook.exe'. bash видит три команды. Средняя выполняется от имени пользователя, который выполнил клонирование.

IDCVE пока нет
КлассRCE (обёртка core.virtualfilesystem в одинарные кавычки)
ДоступУдалённый (UI:R клонирование URL атакующего или локальный git worktree add в подготовленном каталоге)
CWECWE-78, CWE-116
CVSSHigh: 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
ПродуктVFS for Git (требуется microsoft/git)
Затронутоmaster ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (тег v2.0.26259.1). Только Windows.
АутентификацияЖертва клонирует URL атакующего (или git worktree add в подготовленном каталоге)
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1. how=gadget (без Windows VM / живого ProjFS).

Что может сделать атакующий

Выполнить код на хосте от имени пользователя, который клонировал или запустил git. Не SYSTEM. Не неаутентифицированный RCE, пропускающий «жертва клонирует этот URL».

ПривилегияМетод / sinkЧто даётРазведка / целостность / доступностьДоказано в лаборатории или выведено
Выбор имени папки enlistmentПоследний сегмент пути gvfs clone <url> без dest (CloneVerb.GetCloneRoot)Имя каталога выбирает атакующий. Windows допускает ' и ;Целостность пути destДоказано в лаборатории на скопированном dest-хелпере. URL .../pwn';witness;' превращается в C:\temp\pwn';witness;'
Выход за пределы core.virtualfilesystemОбёртка RequiredGitConfig "'" + ConvertPathToGitFormat(hook) + "'"Значение конфигурации — три shell-токена, а не один путьЦелостность git configДоказано в лаборатории. Обёртка — 'C:/temp/pwn';witness;'/src/.git/hooks/GVFS.VirtualFileSystemHook.exe'
Выполнение дополнительной shell-команды от имени клонирующегоmicrosoft/git virtualfilesystem.c use_shell=1 (bash -c от значения конфигурации)Произвольная команда на хосте от UID клонирующегоЦелостность / доступность сессии клонирующегоДоказано в лаборатории на гаджете. witness записал VFS-VFS-QUOTE-WITNESS. Первый и третий токены — отсутствующие пути (rc 127)
Та же обёртка на worktreeProgram.Worktree.cs -c core.virtualfilesystem="'<path>'"Тот же выход без URL клонированияЦелостностьВыведено из исходников на этом пине. Не выполнялось
Повтор при последующих git status / mountInProcessMount.TrySetRequiredGitConfigSettings повторно применяет обёрткуПоследующий git также выполняет враждебное значение через shellЦелостностьВыведено. Не выполнялось

Закрыто на этом остатке: живой ProjFS / Microsoft git / gvfs clone (этот хост — macOS; how=gadget). SYSTEM. Неаутентифицированный RCE, пропускающий «жертва клонирует этот URL». Dest, в имени которого нет ', и тот же враждебный путь, обёрнутый через '\'', не запускают witness.

Другие остатки на этом пине: vfs-mount-dehydrate, vfs-clone-acl, vfs-service-sid, vfs-hook-impersonate, vfs-install-cwd.

Как я это нашёл

Я зафиксировал VFS for Git master ab95cf51 после слияния 2026-09-28. Microsoft рекомендует Scalar для новых развёртываний. Дерево всё ещё помечено тегом v2.0.26259.1. Список пропусков — CVE-2021-47874 (заключённый в кавычки binPath на этом пине). Десять поисков. Гидратация ProjFS, парсеры GPRE, URL кэша, FastFetch и gvfs upgrade в этой планке ничего не дали.

Затем я задержался на RequiredGitConfig. Комментарий документирует bash. Обёртка не экранирует '. CloneVerb использует последний сегмент URL как dest. Вот это и есть остаток.

Уже зафиксированные ошибочные пути: считать багом dest без кавычки (это не так); заявлять SYSTEM; обратный шелл. Театр. Нативной Windows не было, поэтому лаборатория — это гаджет той обёртки плюс bash -c.

Лаборатория

python3 vfs-quote-breakout-Abraxas-Labs.py

или

cd lab
./run.sh

Гаджет HTTP на 127.0.0.1:19630. Копирует обёртку и dest-хелперы, затем /bin/bash -c с PATH, ограниченным хелпером witness, который записывает оракул. Нативной Windows VM не было. Последняя строка использует how=gadget.

SUCCESS vfs-quote-breakout how=gadget who=cloner naive-breakout=yes escaped-hold=yes VFS-VFS-QUOTE-WITNESS

Исправление

Экранировать ' как '\'' перед обёрткой или перестать использовать use_shell и передавать хук как argv[0]. Отклонять пути клонирования и worktree, содержащие '.

Ссылки

  • github.com/microsoft/VFSForGit master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (тег v2.0.26259.1)
  • CloneVerb.cs dest по умолчанию
  • RequiredGitConfig.cs обёртка, не экранирующая '
  • microsoft/git virtualfilesystem.c use_shell=1
  • Рядом исправлено (не эта обёртка): CVE-2021-47874 незаключённый в кавычки ImagePath
  • CWE-78 · CWE-116

Лицензия

GNU Affero GPL v3.0. См. LICENSE. Только loopback-лаборатория. Без гарантий.

Скачать инструмент