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

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

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

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

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

Категории

Все категории
Loading categories
vfs-hook-impersonate — VFS для Git ab95cf51 — высокий — локальный — остаточная привилегия — перехват CreateFileW SecurityImpersonation | Kitploit
Инструменты/GitHubGitHub/abraxas/vfs-hook-impersonate
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеСтатьи и ИсследованияRed TeamingЛаборатории и Практика
GitHubabraxas/vfs-hook-impersonate

vfs-hook-impersonate

VFS для Git ab95cf51 — высокий — локальный — остаточная привилегия — перехват CreateFileW SecurityImpersonation

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

Популярное

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

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

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

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

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

Abraxas Labs - vfs-hook-impersonate

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

vfs-hook-impersonate

Класс: Остаточная привилегия Достижимость: Локальная

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

Нативные git-хуки (read-object, virtual-filesystem, post-index-changed) открывают канал монтирования конкретного enlistment через CreateFileW с dwFlagsAndAttributes = 0. Это опускает SECURITY_SQOS_PRESENT, поэтому Windows по умолчанию устанавливает для клиента SecurityImpersonation. Тот же ACL канала, который используется в остаточной проблеме №2, предоставляет BUILTIN\Users права ReadWrite | CreateNewInstance.

Второй локальный пользователь может создать дополнительный экземпляр или занять \\.\pipe\GVFS_<ENLISTMENT>, вызвать ImpersonateNamedPipeClient и писать от имени жертвы.

IDCVE пока нет
КлассОстаточная привилегия (impersonation через именованный канал)
ДостижимостьЛокальная
CWECWE-284, CWE-300
CVSSHigh: 7.1 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ПродуктVFS for Git
Затронутоmaster ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (также актуально относительно релиза v2.0.26259.1). Только Windows.
АутентификацияЛокальная. У жертвы есть enlistment GVFS. Атакующий — любой субъект BUILTIN\Users. Жертва позже запускает git.
ЛицензияGNU Affero GPL v3.0
ЛабораторияТолько 127.0.0.1. how=gadget (без живой Windows VM / установленного VFS for Git).

Это локально. Это не SYSTEM. Automount в остаточной проблеме №4 — это другой канал (GVFS.Service.pipe). Dehydrate/unmount на этом же канале монтирования — это остаточная проблема №2.

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

У жертвы есть enlistment GVFS. Атакующий — любой субъект BUILTIN\Users. Жертва позже запускает git (status, checkout, что угодно, что вызывает хуки VFS).

ПривилегияМетод / sinkЧто даётРазведка / целостность / доступностьДоказано в лаборатории или выведено
Имперсонация жертвы и запись в её профильДополнительный экземпляр / занятие \\.\pipe\GVFS_C_\REPOS\FOO; хук CreateFileW flags=0; ImpersonateNamedPipeClient; создание %USERPROFILE%\VFS-HOOK-IMPERSONATE-WITNESSЗапись от имени UID жертвыЦелостностьДоказано в лаборатории на гаджете. Владелец witness — uid жертвы. Флаги по умолчанию — SecurityImpersonation. UID атакующего не может писать в этот домашний каталог без имперсонации
Сохранить работу git после занятияОтвет S|\x03 на MPL|1, чтобы GVFS.VirtualFileSystemHook не зависGit продолжает работуДоступность git жертвыДоказано в лаборатории. Хук reply_ok как на уязвимом, так и на исправленном пути
Угадать имя канала по корню enlistmentGetGVFSPipeName проходит от CWD до .gvfs, CharUpper, : -> _, префикс \\.\pipe\GVFS_Угадываемое имя IPCРазведкаДоказано в лаборатории. C:\Repos\Foo\src -> \\.\pipe\GVFS_C_\REPOS\FOO
Перенацелить канал, не выиграв гонку за живой экземплярПодложить отслеживаемый каталог src\.gvfs, чтобы обход вверх привязался к другому имениЗанятие без гонки с монтированиемЦелостностьВыведено из обхода вверх в common.windows.cpp. В лаборатории использовался реальный .gvfs enlistment
Отвечать на DLO / PICN, а также на MPLТот же канал, ReadObjectHook / PostIndexChangedHookЛожь об объектах / skip-worktreeЦелостностьВыведено. В лаборатории отправлялся только MPL|1
Обрушить хук двухбайтовым S\x03В VirtualFileSystemHook messageLength -= 2, затем -= 1 вызывает underflow и fwrite ~4GiBКрах / OOB-чтениеДоступностьВыведено из main.cpp 69-90. Не является оракулом. Не выпускать этот краш

Закрыто здесь: SYSTEM (монтирование выполняется пользователем enlistment). Удалённый неаутентифицированный RCE. Живая Windows VM / установленный VFS for Git (эта лаборатория — гаджет скопированных функций).

Остаточные проблемы на том же пине: vfs-quote-breakout, vfs-mount-dehydrate, vfs-clone-acl, vfs-service-sid, vfs-install-cwd.

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

Я зафиксировал VFSForGit master ab95cf51 после слияния 2026-09-28. Нативные хуки вызывают CreateFileW с флагами 0. Тогда Windows по умолчанию использует SecurityImpersonation. Канал монтирования уже позволяет Users создавать дополнительный экземпляр. Это и есть остаточная проблема.

Уже зафиксированные ошибочные пути: трактовка этого как dehydrate из остаточной проблемы №2 (тот же ACL, другой sink: токен, а не MoveDirectory); заявление о SYSTEM; выпуск underflow на 4GiB в качестве оракула. Театр. Нативная Windows отсутствовала, поэтому лаборатория — это гаджет тех функций. Unix-сокеты заменяют именованные каналы.

Лаборатория

python3 vfs-hook-impersonate-Abraxas-Labs.py

или

cd lab
./run.sh

Гаджет HTTP на 127.0.0.1:19670. Копирует GetGVFSPipeName, флаги CreatePipeToGVFS, ACL CreateNewInstance для Users и протокол хука MPL|1 / S|. Исправленный клиент с SQOS identification не пишет witness. Последняя строка использует how=gadget.

SUCCESS vfs-hook-impersonate how=gadget createfile-flags=0 impersonation=SecurityImpersonation extra-instance=yes owner=victim patched-sqos-ident-no-write=yes VFS-HOOK-IMPERSONATE-WITNESS

Исправление

В хуке CreateFileW передавать SECURITY_SQOS_PRESENT | SECURITY_IDENTIFICATION. Ограничить CreatePipeByName SID владельца enlistment плюс LocalSystem. Убрать CreateNewInstance для Users. Проверять границы длин ответов хука.

Ссылки

  • github.com/microsoft/VFSForGit master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a
  • common.windows.cpp CreatePipeToGVFS
  • WindowsPlatform.cs CreatePipeByName
  • CWE-284 · CWE-300

Лицензия

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

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