Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
vfs-hook-impersonate — VFS per Git ab95cf51 - Alto - Locale - Privilegio residuo - hook CreateFileW SecurityImpersonation | Kitploit
Strumenti/GitHubGitHub/abraxas/vfs-hook-impersonate
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPenetration TestingPaper e RicercaRed TeamingLab e Pratica
GitHubabraxas/vfs-hook-impersonate

vfs-hook-impersonate

VFS per Git ab95cf51 - Alto - Locale - Privilegio residuo - hook CreateFileW SecurityImpersonation

Vedi Repository
54 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Abraxas Labs - vfs-hook-impersonate

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

vfs-hook-impersonate

Classe: Privilegio residuo Portata: Locale

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

Gli hook git nativi (read-object, virtual-filesystem, post-index-changed) aprono la pipe di mount per-enlistment con CreateFileW e dwFlagsAndAttributes = 0. Questo omette SECURITY_SQOS_PRESENT, quindi Windows imposta il client di default a SecurityImpersonation. La stessa ACL della pipe usata dal residuo #2 concede a BUILTIN\Users ReadWrite | CreateNewInstance.

Un secondo utente locale può creare un'istanza extra o fare squatting su \\.\pipe\GVFS_<ENLISTMENT>, ImpersonateNamedPipeClient, e scrivere come la vittima.

IDnessuna CVE al momento
ClassePrivilegio residuo (impersonificazione named-pipe)
PortataLocale
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
ProdottoVFS for Git
Affettomaster ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (anche attuale rispetto alla release v2.0.26259.1). Solo Windows.
AuthLocale. La vittima ha un enlistment GVFS. L'attaccante è un qualsiasi principal BUILTIN\Users. La vittima esegue git in seguito.
LicenzaGNU Affero GPL v3.0
LabSolo 127.0.0.1. how=gadget (nessuna VM Windows live / VFS for Git installato).

Questo è locale. Non è SYSTEM. Automount nel residuo #4 è una pipe diversa (GVFS.Service.pipe). Dehydrate/unmount su questa stessa pipe di mount è il residuo #2.

Cosa può fare un attaccante

La vittima ha un enlistment GVFS. L'attaccante è un qualsiasi principal BUILTIN\Users. La vittima esegue git in seguito (status, checkout, qualsiasi cosa che attivi gli hook VFS).

PrivilegioMetodo / sinkCosa concedeRecon / integrità / disponibilitàProvato in lab o dedotto
Impersonificare la vittima e scrivere nel suo profiloIstanza extra / squat \\.\pipe\GVFS_C_\REPOS\FOO; hook CreateFileW flags=0; ImpersonateNamedPipeClient; creare %USERPROFILE%\VFS-HOOK-IMPERSONATE-WITNESSScrivere come l'UID della vittimaIntegritàProvato in lab su un gadget. Il proprietario del witness è l'uid della vittima. I flag di default sono SecurityImpersonation. L'uid dell'attaccante non può scrivere in quella home senza impersonificazione
Mantenere git funzionante dopo lo squatRispondere S|\x03 a MPL|1 così GVFS.VirtualFileSystemHook non si bloccaGit continuaDisponibilità del git della vittimaProvato in lab. Hook reply_ok sia sul percorso vulnerabile che su quello patchato
Indovinare il nome della pipe dalla root dell'enlistmentGetGVFSPipeName risale dalla CWD a .gvfs, CharUpper, : -> _, prefisso \\.\pipe\GVFS_Nome IPC indovinabileReconProvato in lab. C:\Repos\Foo\src -> \\.\pipe\GVFS_C_\REPOS\FOO
Rettargettare la pipe senza vincere l'istanza livePiantare una directory src\.gvfs tracciata così la risalita si lega a un nome diversoSquatting senza gareggiare con il mountIntegritàDedotto da common.windows.cpp risalita. Il lab ha usato il .gvfs dell'enlistment reale
Rispondere a DLO / PICN oltre che a MPLStessa pipe, ReadObjectHook / PostIndexChangedHookMentire sugli oggetti / skip-worktreeIntegritàDedotto. Il lab ha inviato solo MPL|1
Crashare l'hook con un S\x03 di due byteVirtualFileSystemHook messageLength -= 2 poi -= 1 va in underflow e fwrite di ~4GiBCrash / lettura OOBDisponibilitàDedotto da main.cpp 69-90. Non è l'oracolo. Non distribuire quel crash

Chiusi qui: SYSTEM (il mount è l'utente dell'enlistment). RCE remoto non autenticato. VM Windows live / VFS for Git installato (questo lab è un gadget delle funzioni copiate).

Residui dello stesso pin: vfs-quote-breakout, vfs-mount-dehydrate, vfs-clone-acl, vfs-service-sid, vfs-install-cwd.

Come l'ho trovato

Ho fissato VFSForGit master ab95cf51 dopo il merge del 2026-09-28. Gli hook nativi CreateFileW con flags 0. Windows quindi va di default a SecurityImpersonation. La pipe di mount permette già a Users l'istanza extra. Questo è il residuo.

Vicoli ciechi già registrati: trattarlo come residuo #2 dehydrate (stessa ACL, sink diverso: token, non MoveDirectory); dichiarare SYSTEM; distribuire l'underflow da 4GiB come oracolo. Teatro. Windows nativo mancava, quindi il lab è un gadget di quelle funzioni. I socket Unix sostituiscono le named pipe.

Lab

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

oppure

cd lab
./run.sh

Gadget HTTP su 127.0.0.1:19670. Copia GetGVFSPipeName, i flag di CreatePipeToGVFS, l'ACL CreateNewInstance di Users, e il protocollo hook MPL|1 / S|. Un client patchato con identificazione SQOS non scrive il witness. L'ultima riga 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

La correzione

Sull'hook CreateFileW passare SECURITY_SQOS_PRESENT | SECURITY_IDENTIFICATION. Limitare CreatePipeByName al SID del proprietario dell'enlistment più LocalSystem. Rimuovere CreateNewInstance per Users. Verificare i limiti delle lunghezze di risposta dell'hook.

Riferimenti

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

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento