Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
vfs-mount-dehydrate — VFS pour Git ab95cf51 - Élevé - Local - Résidu de privilège - Les utilisateurs montent le pipe dehydrate/unmount | Kitploit
Outils/GitHubGitHub/abraxas/vfs-mount-dehydrate
Escalade de PrivilègesAnalyse des VulnérabilitésExploitation
GitHubabraxas/vfs-mount-dehydrate

vfs-mount-dehydrate

VFS pour Git ab95cf51 - Élevé - Local - Résidu de privilège - Les utilisateurs montent le pipe dehydrate/unmount

Voir le dépôt
5il y a 4 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - vfs-mount-dehydrate

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

vfs-mount-dehydrate

Classe : Privilège résiduel Portée : Locale

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

CreatePipeByName sur le pipe de montage par enlistment accorde à BUILTIN\Users ReadWrite | CreateNewInstance. Il n'y a aucune vérification du SID du propriétaire et aucun ImpersonateNamedPipeClient. HandleDehydrateFolders Path.Combine les noms de dossiers contrôlés par l'attaquant et les transmet à git via ProcessStartInfo.Arguments. Le chemin dehydrate de la CLI exécute IsFolderValid. Le gestionnaire de montage ne le fait pas.

Toute personne dans Users qui peut deviner \\.\pipe\GVFS_<ENLISTMENT> peut démonter ProjFS, déplacer des répertoires en tant qu'utilisateur du montage et forcer git reset HEAD --hard.

IDpas encore de CVE
ClassePrivilège résiduel (ACL de named-pipe) / traversée de chemin / injection d'arguments
PortéeLocale
CWECWE-284, CWE-22, CWE-88
CVSSÉlevé : 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ProduitVFS for Git
Affectémaster ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a ; tags de l'installeur v2.0.26229.1 / v2.0.26259.1. Windows uniquement.
AuthLocale. Tout principal BUILTIN\Users tant que la victime a un montage
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement. how=gadget (pas de VM Windows / ProjFS réel).

Protocole du pipe : UTF-8 Header ou Header|body, terminé par l'octet 0x03. Le nom du pipe est GVFS_ + la racine d'enlistment en majuscules avec : remplacé par _ (exemple C:\Repos\Foo -> \\.\pipe\GVFS_C_\REPOS\FOO).

Ce qu'un attaquant peut faire

La victime a gvfs mount sur une racine connue. L'attaquant est un autre principal Users sur la même machine. Intégrité et disponibilité en tant que la victime. Pas SYSTEM. Pas un shell à lui seul.

PrivilègeMéthode / sinkCe que cela accordeRecon / intégrité / disponibilitéProuvé en lab ou déduit
Se connecter au pipe de montage de la victimeACL CreatePipeByName BuiltinUsers ReadWrite | CreateNewInstance ; aucune vérification du propriétaireParler l'IPC de montageRecon du pipeProuvé en lab (ACL du gadget). SID de l'attaquant accepté ; le mode propriétaire uniquement renvoie connect-denied
Lire le chemin d'enlistment, le chemin de cache, RepoUrlGetStatusFuiter la racine utilisée pour le résidu #1 / #4ReconProuvé en lab. Le JSON de statut incluait RepoUrl et GVFS_C_\REPOS\FOO
Démonter ProjFS et quitter gvfs.mountmessage UnmountFaire tomber l'enlistmentDisponibilitéProuvé en lab. Répond Ack puis Complete ; état du montage Unmounted
Démonter sur un échec de parsingReleaseLock avec corps vide -> RequestData == null -> UnmountAndStopWorkingDirectoryCallbacks + Environment.ExitMême démontage plus sortie du processusDisponibilitéProuvé en lab. ReleaseLock| vide a démonté
Détruire l'arbre de travail de la victimeDehydrate|{"Folders":"--hard",...}. movedFolders.Add même si le dossier source est absent. Reset("HEAD", "\"--hard\" ") devient git reset HEAD --hard après suppression des guillemetsDétruire les fichiers suivis modifiésIntégrité / disponibilitéProuvé en lab. Un fichier suivi modifié a perdu la chaîne témoin
Déplacer un dossier hors de l'arbre de travail en tant que la victimePath.Combine(WorkingDirectoryBackingRoot, folder) + MoveDirectory vers BackupFolderPathVoler / déplacer un dossier de l'arbre de travailIntégritéProuvé en lab. keepme a quitté src et est apparu sous le chemin de sauvegarde de l'attaquant
Traverser .. (le IsFolderValid de la CLI n'est pas utilisé)même Combine ; ..\secretDéplacer un dossier frère que l'utilisateur du montage peut écrireIntégritéProuvé en lab. Le frère secret a atterri sous le chemin de sauvegarde de l'attaquant. L'application de IsFolderValid l'a bloqué
Voler ou détruire d'autres répertoires inscriptibles par la victimemême déplacement avec une chaîne ..\ qui se résout hors de l'enlistmentDéplacement plus large en tant qu'utilisateur du montageIntégritéDéduit de Combine. Ce lab n'utilise qu'un arbre jetable
Exécution de code en tant que la victimece pipeCréation de processus d'une image attaquanteIntégritéFermé. Aucune création de processus d'image attaquante sur ce résidu (voir vfs-service-sid et vfs-hook-impersonate)
SYSTEMIPC de montageLocalSystemIntégritéFermé. Le montage s'exécute en tant qu'utilisateur de l'enlistment

--hard n'est pas un chemin ... Le IsFolderValid de la CLI l'autorise quand même. Un correctif doit aussi rejeter les noms de dossiers ressemblant à des options.

Mêmes résidus sur ce pin : vfs-quote-breakout, vfs-clone-acl, vfs-service-sid, vfs-hook-impersonate, vfs-install-cwd.

Comment je l'ai trouvé

J'ai épinglé VFSForGit master ab95cf51 après le merge du 2026-09-28. Le pipe du service et le pipe de montage par enlistment partagent CreatePipeByName. Dehydrate sur la CLI valide les dossiers. Le gestionnaire de montage ne le fait pas.

Fausses pistes déjà consignées : traiter --hard comme une traversée de chemin (c'est une injection d'arguments après suppression des guillemets) ; revendiquer SYSTEM ; un reverse shell. Du théâtre. Windows natif était absent, donc le lab est un gadget de ces fonctions plus un arbre git jetable.

Lab

python3 vfs-mount-dehydrate-Abraxas-Labs.py

ou

cd lab
./run.sh

Gadget HTTP sur 127.0.0.1:19640 parlant la forme des messages du pipe. Arbre git jetable à l'intérieur du conteneur. Pas de reverse shell. Pas de vrai chemin de profil. La dernière ligne utilise how=gadget.

SUCCESS vfs-mount-dehydrate how=gadget unmount=yes reset-hard=yes dirty-gone=yes move-inside=yes move-dotdot=yes pipe-acl=users-no-owner is-folder-valid-not-on-pipe=yes VFS-MOUNT-DEHYDRATE-WITNESS

Le correctif

Télécharger l’outil