Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
vfs-quote-breakout — VFS for Git ab95cf51 - 高危 - 远程 - RCE - core.virtualfilesystem 单引号包裹 | Kitploit
工具/GitHubGitHub/abraxas/vfs-quote-breakout
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制论文与研究Payload 开发
GitHubabraxas/vfs-quote-breakout

vfs-quote-breakout

VFS for Git ab95cf51 - 高危 - 远程 - RCE - core.virtualfilesystem 单引号包裹

查看仓库
84天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - vfs-quote-breakout

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

vfs-quote-breakout

类别: RCE 可达性: 远程

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

CloneVerb.GetCloneRoot 将 URL 路径的最后一段作为默认的登记文件夹,并且不会去除引号。RequiredGitConfig 随后将 core.virtualfilesystem 写成一个天真的单引号包裹的钩子路径。microsoft/git 以 use_shell=1 运行该值。产品注释甚至点名了 bash。

一个克隆 URL,其最后一段为 pwn';witness;',会变成 'C:/temp/pwn';witness;'/src/.git/hooks/GVFS.VirtualFileSystemHook.exe'。bash 会看到三条命令。中间那条以克隆该仓库的用户身份运行。

ID暂无 CVE
类别RCE(core.virtualfilesystem 的单引号包裹)
可达性远程(UI:R 克隆攻击者 URL,或在构造的目录下本地执行 git worktree add)
CWECWE-78、CWE-116
CVSS高危:8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
产品VFS for Git(需要 microsoft/git)
受影响版本master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a(标签 v2.0.26259.1)。仅限 Windows。
认证受害者克隆攻击者 URL(或在构造的目录下执行 git worktree add)
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1。how=gadget(无 Windows VM / 实时 ProjFS)。

攻击者能做什么

以克隆或运行 git 的用户身份执行主机代码。不是 SYSTEM。不是跳过“受害者克隆此 URL”的未认证 RCE。

权限方法 / 汇聚点授予的能力侦察 / 完整性 / 可用性实验验证或推断
选择登记文件夹名称gvfs clone <url> 无目标路径时的最后一段路径(CloneVerb.GetCloneRoot)目录名由攻击者选择。Windows 允许 ' 和 ;目标路径的完整性在复制的目标辅助程序上实验验证。URL .../pwn';witness;' 变成 C:\temp\pwn';witness;'
突破 core.virtualfilesystemRequiredGitConfig 包裹 "'" + ConvertPathToGitFormat(hook) + "'"配置值是三个 shell 令牌,而非一个路径git 配置的完整性实验验证。包裹结果为 'C:/temp/pwn';witness;'/src/.git/hooks/GVFS.VirtualFileSystemHook.exe'
以克隆者身份运行额外的 shell 命令microsoft/git virtualfilesystem.c use_shell=1(对配置值执行 bash -c)以克隆者 UID 执行任意主机命令克隆者会话的完整性 / 可用性在 gadget 上实验验证。witness 写入了 VFS-VFS-QUOTE-WITNESS。第一个和第三个令牌是缺失的路径(rc 127)
在 worktree 上同样的包裹Program.Worktree.cs -c core.virtualfilesystem="'<path>'"无需克隆 URL 的相同突破完整性从固定源码推断。未执行
在后续 git status / 挂载时重复InProcessMount.TrySetRequiredGitConfigSettings 重新应用该包裹后续 git 也会 shell 执行恶意值完整性推断。未执行

本次遗留问题中已排除:实时 ProjFS / Microsoft git / gvfs clone(本主机为 macOS;how=gadget)。SYSTEM。跳过“受害者克隆此 URL”的未认证 RCE。名称中不含 ' 的目标路径,以及用 '\'' 包裹的相同恶意路径,都不会运行 witness。

同一固定版本的遗留问题:vfs-mount-dehydrate、vfs-clone-acl、vfs-service-sid、vfs-hook-impersonate、vfs-install-cwd。

我是如何发现的

在 2026-09-28 合并后,我固定了 VFS for Git master ab95cf51。Microsoft 建议新部署使用 Scalar。该代码树仍标记为 v2.0.26259.1。跳过列表是 CVE-2021-47874(此固定版本上带引号的 binPath)。十次搜寻。ProjFS 水合、GPRE 解析器、缓存 URL、FastFetch 和 gvfs upgrade 在此标准下均无发现。

然后我盯上了 RequiredGitConfig。注释记录了 bash。包裹并未转义 '。CloneVerb 使用 URL 最后一段作为目标路径。这就是遗留问题。

已记录的弯路:将不含引号的目标路径视为漏洞(并非如此);声称 SYSTEM;反弹 shell。都是表演。缺少原生 Windows,因此实验环境是该包裹加上 bash -c 的 gadget。

实验环境

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

或

cd lab
./run.sh

Gadget HTTP 位于 127.0.0.1:19630。复制包裹和目标辅助程序,然后以 PATH 限制为写入 oracle 的 witness 辅助程序执行 /bin/bash -c。原生 Windows VM 不可用。最后一行使用 how=gadget。

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

修复方案

在包裹前将 ' 转义为 '\'',或停止使用 use_shell 并将钩子作为 argv[0] 传递。拒绝包含 ' 的克隆和 worktree 路径。

参考资料

  • github.com/microsoft/VFSForGit master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a(标签 v2.0.26259.1)
  • CloneVerb.cs 默认目标路径
  • RequiredGitConfig.cs 未转义 ' 的包裹
  • microsoft/git virtualfilesystem.c use_shell=1
  • 附近已修补(非此包裹):CVE-2021-47874 未加引号的 ImagePath
  • CWE-78 · CWE-116

许可证

GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境。无担保。

下载工具