Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
vfs-hook-impersonate — VFS para Git ab95cf51 - Alta - Local - Privilégio remanescente - hook CreateFileW SecurityImpersonation | Kitploit
Ferramentas/GitHubGitHub/abraxas/vfs-hook-impersonate
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoTestes de PenetraçãoPapers e PesquisaRed TeamingLabs e Prática
GitHubabraxas/vfs-hook-impersonate

vfs-hook-impersonate

VFS para Git ab95cf51 - Alta - Local - Privilégio remanescente - hook CreateFileW SecurityImpersonation

Ver Repositório
5há 4 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Abraxas Labs - vfs-hook-impersonate

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

vfs-hook-impersonate

Classe: Privilégio remanescente Alcance: Local

VFS for Git master ab95cf51 (tag v2.0.26259.1) - Microsoft

Os hooks nativos do git (read-object, virtual-filesystem, post-index-changed) abrem o pipe de montagem por enlistment com CreateFileW e dwFlagsAndAttributes = 0. Isso omite SECURITY_SQOS_PRESENT, então o Windows define o cliente por padrão como SecurityImpersonation. A mesma ACL do pipe que o leftover #2 usa concede a BUILTIN\Users ReadWrite | CreateNewInstance.

Um segundo usuário local pode criar uma instância extra ou fazer squat em \\.\pipe\GVFS_<ENLISTMENT>, ImpersonateNamedPipeClient, e escrever como a vítima.

IDsem CVE ainda
ClassePrivilégio remanescente (impersonação de named pipe)
AlcanceLocal
CWECWE-284, CWE-300
CVSSAlto: 7.1 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProdutoVFS for Git
Afetadomaster ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (também atual vs release v2.0.26259.1). Somente Windows.
AuthLocal. A vítima tem um enlistment GVFS. O atacante é qualquer principal BUILTIN\Users. A vítima depois executa git.
LicençaGNU Affero GPL v3.0
LabSomente 127.0.0.1. how=gadget (sem VM Windows ativa / VFS for Git instalado).

Isto é local. Não é SYSTEM. O automount no leftover #4 é um pipe diferente (GVFS.Service.pipe). Dehydrate/unmount neste mesmo pipe de montagem é o leftover #2.

O que um atacante pode fazer

A vítima tem um enlistment GVFS. O atacante é qualquer principal BUILTIN\Users. A vítima depois executa git (status, checkout, qualquer coisa que dispare os hooks do VFS).

PrivilégioMétodo / sinkO que concedeRecon / integridade / disponibilidadeComprovado em lab ou inferido
Personificar a vítima e escrever no perfil delaInstância extra / squat \\.\pipe\GVFS_C_\REPOS\FOO; hook CreateFileW flags=0; ImpersonateNamedPipeClient; criar %USERPROFILE%\VFS-HOOK-IMPERSONATE-WITNESSEscrever como o UID da vítimaIntegridadeComprovado em lab com um gadget. O dono do witness é o uid da vítima. As flags padrão são SecurityImpersonation. O uid do atacante não consegue escrever nesse home sem impersonação
Manter o git funcionando após o squatResponder S|\x03 a MPL|1 para que GVFS.VirtualFileSystemHook não traveO git continuaDisponibilidade do git da vítimaComprovado em lab. Hook reply_ok tanto no caminho vulnerável quanto no corrigido
Adivinhar o nome do pipe a partir da raiz do enlistmentGetGVFSPipeName percorre o CWD até .gvfs, CharUpper, : -> _, prefixo \\.\pipe\GVFS_Nome de IPC adivinhávelReconComprovado em lab. C:\Repos\Foo\src -> \\.\pipe\GVFS_C_\REPOS\FOO
Redirecionar o pipe sem vencer a instância ativaPlantar um diretório src\.gvfs rastreado para que a subida vincule um nome diferenteSquat sem competir com a montagemIntegridadeInferido a partir da subida em common.windows.cpp. O lab usou o .gvfs real do enlistment
Responder DLO / PICN além de MPLMesmo pipe, ReadObjectHook / PostIndexChangedHookMentir sobre objetos / skip-worktreeIntegridadeInferido. O lab enviou apenas MPL|1
Derrubar o hook com um S\x03 de dois bytesVirtualFileSystemHook messageLength -= 2 depois -= 1 causa underflow e fwrite de ~4GiBCrash / leitura fora dos limitesDisponibilidadeInferido de main.cpp 69-90. Não é o oráculo. Não distribua esse crash

Fechado aqui: SYSTEM (a montagem é do usuário do enlistment). RCE remoto não autenticado. VM Windows ativa / VFS for Git instalado (este lab é um gadget das funções copiadas).

Leftovers do mesmo pin: vfs-quote-breakout, vfs-mount-dehydrate, vfs-clone-acl, vfs-service-sid, vfs-install-cwd.

Como eu encontrei

Eu fixei o VFSForGit master ab95cf51 após o merge de 2026-09-28. Hooks nativos CreateFileW com flags 0. O Windows então usa SecurityImpersonation por padrão. O pipe de montagem já permite que Users criem instância extra. Esse é o leftover.

Caminhos errados já registrados: tratar isto como dehydrate do leftover #2 (mesma ACL, sink diferente: token, não MoveDirectory); alegar SYSTEM; distribuir o underflow de 4GiB como o oráculo. Teatro. O Windows nativo estava faltando, então o lab é um gadget dessas funções. Unix sockets substituem named pipes.

Lab

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

ou

cd lab
./run.sh

Gadget HTTP em 127.0.0.1:19670. Copia GetGVFSPipeName, as flags de CreatePipeToGVFS, a ACL CreateNewInstance de Users, e o protocolo de hook MPL|1 / S|. Um cliente corrigido com identificação SQOS não escreve o witness. A última linha usa 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

A correção

No hook CreateFileW passe SECURITY_SQOS_PRESENT | SECURITY_IDENTIFICATION. Restrinja CreatePipeByName ao SID do dono do enlistment mais LocalSystem. Remova CreateNewInstance para Users. Faça verificação de limites nos comprimentos de resposta do hook.

Referências

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

Licença

GNU Affero GPL v3.0. Veja LICENSE. Somente lab em loopback. Sem garantia.

Baixar ferramenta