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-service-sid — VFS per Git ab95cf51 - Medio - Locale - Privilegio residuo - la named pipe del servizio si fida dell'OwnerSID nel JSON | Kitploit
Strumenti/GitHubGitHub/abraxas/vfs-service-sid
Autenticazione e AutorizzazioneEscalation di PrivilegiAnalisi delle VulnerabilitàExploitPenetration TestingConfigurazione ErrataLab e Pratica
GitHubabraxas/vfs-service-sid

vfs-service-sid

VFS per Git ab95cf51 - Medio - Locale - Privilegio residuo - la named pipe del servizio si fida dell'OwnerSID nel JSON

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-service-sid

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

vfs-service-sid

Classe: Privilegio residuo Portata: Locale

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

GVFS.Service viene eseguito come LocalSystem. WindowsPlatform.CreatePipeByName concede a BUILTIN\Users ReadWrite | CreateNewInstance su GVFS.Service.pipe. RegisterRepoHandler.Run memorizza il JSON OwnerSID così com'è. Nulla invoca ImpersonateNamedPipeClient.

Qualsiasi principal di Users può registrare un percorso dell'attaccante sotto un SID della vittima. Al SessionLogon il servizio esegue CreateProcessAsUser di gvfs mount <attacker path> come la vittima. Il processo figlio non è NT AUTHORITY\SYSTEM.

IDnessuna CVE al momento
ClassePrivilegio residuo (autorizzazione mancante / esecuzione cross-utente)
PortataLocale
CWECWE-862, CWE-284
CVSSMedio: 6.6 CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
ProdottoVFS for Git
Affettomaster ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a; tag GitHub v2.0.26229.1 / v2.0.26259.1. Solo Windows.
AuthLocale. Qualsiasi principal BUILTIN\Users. Logon della vittima per l'automount.
LicenzaGNU Affero GPL v3.0
LabSolo 127.0.0.1. how=gadget (nessun GVFS.Service Windows reale).

Git 2.35+ dubious-ownership può poi far fallire git all'interno di un albero di proprietà dell'attaccante. Il processo parte comunque come la vittima. Se il percorso è di proprietà della vittima ma scrivibile dall'attaccante (vfs-clone-acl), mount git, credential.helper e hook vengono eseguiti come quell'utente.

Cosa può fare un attaccante

Qualsiasi principal BUILTIN\Users su una macchina dove il servizio è installato. Connettersi a \\.\pipe\GVFS.Service.pipe. Nessun privilegio aggiuntivo.

PrivilegioMetodo / sinkCosa concedeRecon / integrità / disponibilitàProvato in lab o dedotto
Elencare ogni root di enlistment attivoGetActiveRepoListRequest senza controllo del SID (TryGetActiveRepos, non GetActiveReposForUser)Percorsi usati come oracolo del nome della pipe per il residuo #2ReconProvato in lab. Il gadget ha elencato /lab/repos/victim
Disattivare un enlistment della vittima in modo che non venga automontatoUnregisterRepoRequest {EnlistmentRoot} senza controllo del SID (TryDeactivateRepo)I repo della vittima restano smontatiDisponibilitàProvato in lab. Riga della vittima rimossa dalla lista attiva
Persistere il percorso dell'attaccante sotto il SID della vittimaRegisterRepoRequest JSON EnlistmentRoot + OwnerSID; TryRegisterRepo memorizza entrambiRiga di registro percorso-attaccante + SID vittimaIntegritàProvato in lab. Riga di registro /lab/repos/attacker + S-1-5-21-1000-2000-3000-1001
Avviare GVFS.exe mount <attacker path> come la vittima al logonOnSessionChange SessionLogon -> AutoMountRepos(userId) -> TryRunAs / CreateProcessAsUserCreazione di processo cross-utente come l'utente che effettua il logonIntegritàProvato in lab sul gadget. Parent generato GVFS.Service, argv mount /lab/repos/attacker, uid 1002 victim, witness scritto
Eseguire come NT AUTHORITY\SYSTEMStesso automountFiglio LocalSystemIntegritàChiuso. Il figlio whoami è la vittima, non SYSTEM (child-not-system=yes)
Git / hook / credential.helper come la vittima all'interno di un albero di proprietà dell'attaccanteLa creazione del processo avviene comunque; git 2.35+ safe.directory può fallireRCE tramite hook come la vittima se l'albero è di proprietà della vittima ma scrivibile dall'attaccanteIntegritàDedotto. Il lab non ha eseguito Microsoft git. Associare il percorso come di proprietà della vittima ma scrivibile dall'attaccante per l'RCE tramite hook

Chiuso su questo pin: accesso remoto non autenticato (la named pipe è locale). Shell SYSTEM. L'ACL predefinita della pipe consente comunque l'accesso a Users; un register corretto che associa il SID del client (gadget X-Patched: 1) non automonta il percorso dell'attaccante per la vittima.

Altri residui dello stesso pin: vfs-quote-breakout, vfs-mount-dehydrate, vfs-clone-acl, vfs-hook-impersonate, vfs-install-cwd.

Come l'ho trovato

Ho fissato VFSForGit master ab95cf51 dopo il merge del 2026-09-28. L'ACL della pipe del servizio è Users ReadWrite. Register memorizza il JSON OwnerSID. SessionLogon automonta come quel SID. Nulla impersona il client della pipe.

Vicoli ciechi già registrati: chiamare questa cosa una shell SYSTEM (l'automount è CreateProcessAsUser del token di logon); trattare git safe.directory come autorizzazione dell'IPC; una reverse shell. Teatro. Windows nativo era assente, quindi il lab è un gadget degli handler del pin più un oracolo TCP Unix.

Lab

python3 vfs-service-sid-Abraxas-Labs.py

oppure

cd lab
./run.sh

Gadget HTTP su 127.0.0.1:19660. Witness VFS-SERVICE-SID-WITNESS. L'ultima riga usa how=gadget.

SUCCESS vfs-service-sid how=gadget register-forged-sid=yes automount-as-victim=yes child-not-system=yes VFS-SERVICE-SID-WITNESS

La correzione

Impersonare il client della named pipe (ImpersonateNamedPipeClient / NamedPipeServerStream.RunAsClient). Ignorare il JSON OwnerSID; associare TryRegisterRepo al SID del client. Limitare CreatePipeByName all'utente interattivo e a LocalSystem (rimuovere BuiltinUsersSid ReadWrite / CreateNewInstance). GetActiveRepoList dovrebbe restituire solo i repo di quel client. UnregisterRepo dovrebbe richiedere la stessa corrispondenza di SID.

Riferimenti

Scarica lo strumento