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-clone-acl — VFS per Git ab95cf51 - Alta - Locale - Privilegio residuo - clonazione Authenticated Users GENERIC_WRITE | Kitploit
Strumenti/GitHubGitHub/abraxas/vfs-clone-acl
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPenetration TestingPaper e RicercaConfigurazione ErrataRed Teaming
GitHubabraxas/vfs-clone-acl

vfs-clone-acl

VFS per Git ab95cf51 - Alta - Locale - Privilegio residuo - clonazione Authenticated Users GENERIC_WRITE

Vedi Repository
83 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-clone-acl

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

vfs-clone-acl

Classe: Privilegio residuo Portata: Locale

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

CloneVerb crea PrimaryEnlistmentRoot con TryCreateDirectoryAccessibleByAuthUsers. Quell'helper aggiunge NT AUTHORITY\Authenticated Users con GENERIC_READ|WRITE|EXECUTE|DELETE e ContainerInherit|ObjectInherit. Il commento parla di accesso elevato vs non elevato per lo stesso utente. Il SID è ogni utente autenticato.

Dopo che la vittima esegue gvfs clone, un altro utente connesso può scrivere in quell'albero, incluso src\.git\hooks. Il repository rimane di proprietà della vittima, quindi safe.directory di git non blocca.

IDnessuna CVE al momento
ClassePrivilegio residuo (ACL di directory troppo permissiva / plant di hook)
PortataLocale
CWECWE-732, CWE-276
CVSSAlto: 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ProdottoVFS for Git
Affettomaster ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (tag v2.0.26259.1). Solo Windows.
AuthLocale. La vittima esegue gvfs clone. L'attaccante è un altro utente autenticato.
LicenzaGNU Affero GPL v3.0
LabSolo 127.0.0.1. how=gadget (nessun Windows nativo / ProjFS).

Questo è RCE sull'host locale come l'utente che ha clonato al successivo hook git/GVFS. Non è una shell SYSTEM. Il lab ha piantato solo un file canary; non ha eseguito un hook.

Cosa può fare un attaccante

La vittima ha clonato con GVFS. L'attaccante è un altro principal Authenticated Users connesso.

PrivilegioMetodo / sinkCosa concedeRecon / integrità / disponibilitàProvato in lab o dedotto
Ereditare GENERIC_WRITE sulla root dell'enlistmentCloneVerb chiama TryCreateDirectoryAccessibleByAuthUsers(PrimaryEnlistmentRoot)Ogni utente autenticato può scrivere l'alberoIntegritàProvato in lab sul gadget. La riga icacls è NT AUTHORITY\Authenticated Users:(OI)(CI)(GR,GW,GE,D), SID S-1-5-11, mask 0xe0010000
Ereditare quella ACE sui figli incluso .git/hooksContainerInherit | ObjectInheritLa directory degli hook è scrivibile dall'attaccanteIntegritàProvato in lab. authusers_hooks=yes
Piantare un file sotto src/.git/hooks come attaccantescrivere VFS-CLONE-ACL-WITNESSCanary nella directory degli hook di proprietà della vittimaIntegritàProvato in lab. Il proprietario è l'uid 1001 dell'attaccante, il testo è il witness
Eseguire un hook piantato come la vittima al successivo comando git/GVFSsovrascrivere pre-command / il loader GVFS in un clone usa e gettaCodice sull'host come l'utente che ha clonatoIntegritàDedotto. Il lab ha piantato solo un file canary; non ha eseguito un hook
Scrivere la cache locale degli oggetti allo stesso modoLocalCacheResolver.cs stesso helperL'albero della cache è scrivibile da Auth UsersIntegritàDedotto. Il lab ha clonato solo la root dell'enlistment
Negativo: ACL solo proprietario0700, nessuna ACE Authenticated UsersScrittura dell'attaccante negataChiusoProvato in lab chiuso. La scrittura dell'attaccante è EACCES
other:: scrivibile da tuttin/aScrittura POSIX otherChiusoProvato in lab chiuso. other_write=no
Scrittura remota non autenticatan/aScrittura di reteChiusoSecondo login locale
Shell SYSTEMn/aLocalSystemChiusoIl prossimo hook viene eseguito come l'utente che ha clonato, non come LocalSystem

Stessi residui del pin: vfs-quote-breakout, vfs-mount-dehydrate, vfs-service-sid, vfs-hook-impersonate, vfs-install-cwd.

Come l'ho trovato

Ho fissato VFSForGit master ab95cf51 dopo il merge del 2026-09-28. Il clone crea la root dell'enlistment con un helper il cui commento riguarda lo split-token UAC. Il SID è AuthenticatedUserSid. Cioè ogni utente connesso, non l'utente che ha creato.

Vicoli ciechi già registrati: trattarlo come scrivibile da tutti other:: (non lo è; POSIX other non aveva scrittura); sostenere SYSTEM; eseguire un hook piantato nel lab. Teatro. Windows nativo era assente, quindi il lab è un gadget di quelle funzioni come ACL POSIX di gruppo con nome.

Lab

python3 vfs-clone-acl-Abraxas-Labs.py

oppure

cd lab
./run.sh

Gadget HTTP su 127.0.0.1:19650. Copia TryCreateDirectoryAccessibleByAuthUsers e applica la stessa ACE come ACL POSIX di gruppo con nome (authusers). L'ultima riga usa how=gadget.

SUCCESS vfs-clone-acl how=gadget auth-users-write=yes inherit=OI-CI attacker-hook-write=yes owner-only=eacces VFS-CLONE-ACL-WITNESS

La correzione

Concedere all'utente che crea (e opzionalmente agli Administrators per UAC), non a AuthenticatedUserSid. L'equivalente icacls è (OI)(CI)(M) solo per il proprietario.

Riferimenti

  • github.com/microsoft/VFSForGit master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a
  • CloneVerb.cs
  • WindowsFileSystem.cs TryCreateDirectoryAccessibleByAuthUsers
  • LocalCacheResolver.cs
  • CWE-732 · CWE-276

Licenza

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

Scarica lo strumento