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-quote-breakout — VFS pour Git ab95cf51 - Élevé - À distance - RCE - core.virtualfilesystem enveloppement par guillemet simple | Kitploit
Outils/GitHubGitHub/abraxas/vfs-quote-breakout
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionCommandement et ContrôleArticles et RechercheDéveloppement de Charges Utiles
GitHubabraxas/vfs-quote-breakout

vfs-quote-breakout

VFS pour Git ab95cf51 - Élevé - À distance - RCE - core.virtualfilesystem enveloppement par guillemet simple

Voir le dépôt
8il 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-quote-breakout

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

vfs-quote-breakout

Classe : RCE Portée : Distante

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

CloneVerb.GetCloneRoot prend le dernier segment du chemin de l'URL comme dossier d'enlistement par défaut et ne supprime pas un guillemet. RequiredGitConfig écrit ensuite core.virtualfilesystem comme un chemin de hook naïvement entouré de guillemets simples. microsoft/git exécute cette valeur avec use_shell=1. Le commentaire du produit mentionne même bash.

Une URL de clone dont le dernier segment est pwn';witness;' devient 'C:/temp/pwn';witness;'/src/.git/hooks/GVFS.VirtualFileSystemHook.exe'. bash y voit trois commandes. Celle du milieu s'exécute en tant que l'utilisateur qui a cloné.

IDpas encore de CVE
ClasseRCE (encapsulation par guillemets simples de core.virtualfilesystem)
PortéeDistante (UI:R clone d'une URL attaquante, ou git worktree add local sous un répertoire forgé)
CWECWE-78, CWE-116
CVSSÉlevé : 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
ProduitVFS for Git (nécessite microsoft/git)
Affectémaster ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (tag v2.0.26259.1). Windows uniquement.
AuthLa victime clone une URL attaquante (ou git worktree add sous un répertoire forgé)
LicenceGNU Affero GPL v3.0
Labo127.0.0.1 uniquement. how=gadget (pas de VM Windows / ProjFS réel).

Ce qu'un attaquant peut faire

Exécuter du code en tant que l'utilisateur qui a cloné ou lancé git. Pas SYSTEM. Pas de RCE non authentifiée qui contourne « la victime clone cette URL ».

PrivilègeMéthode / sinkCe que cela accordeReconnaissance / intégrité / disponibilitéProuvé en labo ou déduit
Choisir le nom du dossier d'enlistementDernier segment de chemin de gvfs clone <url> sans dest (CloneVerb.GetCloneRoot)Le nom du répertoire est choisi par l'attaquant. Windows autorise ' et ;Intégrité du chemin de destProuvé en labo sur le helper de dest copié. L'URL .../pwn';witness;' devient C:\temp\pwn';witness;'
S'échapper de core.virtualfilesystemRequiredGitConfig encapsule "'" + ConvertPathToGitFormat(hook) + "'"La valeur de config est trois jetons shell, pas un seul cheminIntégrité de la config gitProuvé en labo. L'encapsulation est 'C:/temp/pwn';witness;'/src/.git/hooks/GVFS.VirtualFileSystemHook.exe'
Exécuter une commande shell supplémentaire en tant que cloneurmicrosoft/git virtualfilesystem.c use_shell=1 (bash -c de la valeur de config)Commande hôte arbitraire en tant qu'UID du cloneurIntégrité / disponibilité de la session du cloneurProuvé en labo sur le gadget. witness a écrit VFS-VFS-QUOTE-WITNESS. Les premier et troisième jetons sont des chemins manquants (rc 127)
Même encapsulation sur worktreeProgram.Worktree.cs -c core.virtualfilesystem="'<path>'"Même évasion sans URL de cloneIntégritéDéduit du code source épinglé. Non exécuté
Répétition lors d'un git status / mount ultérieurInProcessMount.TrySetRequiredGitConfigSettings réapplique l'encapsulationUn git ultérieur exécute aussi la valeur hostile via le shellIntégritéDéduit. Non exécuté

Fermé sur ce reliquat : ProjFS réel / Microsoft git / gvfs clone (cet hôte est macOS ; how=gadget). SYSTEM. RCE non authentifiée qui contourne « la victime clone cette URL ». Un dest dont le nom ne contient pas de ', et le même chemin hostile encapsulé avec '\'', n'exécutent pas witness.

Mêmes reliquats du pin : vfs-mount-dehydrate, vfs-clone-acl, vfs-service-sid, vfs-hook-impersonate, vfs-install-cwd.

Comment je l'ai trouvé

J'ai épinglé VFS for Git master ab95cf51 après le merge du 2026-09-28. Microsoft recommande Scalar pour les nouveaux déploiements. L'arbre est toujours tagué v2.0.26259.1. La liste des exclusions est CVE-2021-47874 (binPath entre guillemets sur ce pin). Dix chasses. L'hydratation ProjFS, les parseurs GPRE, les URLs de cache, FastFetch et gvfs upgrade sont revenus vides dans cette barre.

Puis je me suis attardé sur RequiredGitConfig. Le commentaire documente bash. L'encapsulation n'échappe pas '. CloneVerb utilise le dernier segment de l'URL comme dest. C'est le reliquat.

Fausses pistes déjà consignées : traiter un dest sans guillemet comme le bug (ce n'est pas le cas) ; prétendre SYSTEM ; un reverse shell. Du théâtre. Windows natif manquait, donc le labo est un gadget de cette encapsulation plus bash -c.

Labo

python3 vfs-quote-breakout-Abraxas-Labs.py

ou

cd lab
./run.sh

Gadget HTTP sur 127.0.0.1:19630. Copie les helpers d'encapsulation et de dest, puis /bin/bash -c avec un PATH limité à un helper witness qui écrit l'oracle. Une VM Windows native n'était pas disponible. La dernière ligne utilise how=gadget.

SUCCESS vfs-quote-breakout how=gadget who=cloner naive-breakout=yes escaped-hold=yes VFS-VFS-QUOTE-WITNESS

Le correctif

Échapper ' en '\'' avant l'encapsulation, ou cesser d'utiliser use_shell et passer le hook comme argv[0]. Rejeter les chemins de clone et de worktree qui contiennent '.

Références

  • github.com/microsoft/VFSForGit master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (tag v2.0.26259.1)
  • CloneVerb.cs dest par défaut
  • RequiredGitConfig.cs encapsulation qui n'échappe pas '
  • microsoft/git virtualfilesystem.c use_shell=1
  • Correctif voisin (pas cette encapsulation) : CVE-2021-47874 ImagePath sans guillemets
  • CWE-78 · CWE-116

Licence

GNU Affero GPL v3.0. Voir LICENSE. Labo en boucle locale uniquement. Aucune garantie.

Télécharger l’outil