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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
vfs-clone-acl — VFS for Git ab95cf51 - 高 - 本地 - 权限残留 - clone Authenticated Users GENERIC_WRITE | Kitploit
工具/GitHubGitHub/abraxas/vfs-clone-acl
权限提升漏洞分析漏洞利用渗透测试论文与研究错误配置红队
GitHubabraxas/vfs-clone-acl

vfs-clone-acl

VFS for Git ab95cf51 - 高 - 本地 - 权限残留 - clone Authenticated Users GENERIC_WRITE

查看仓库
83天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - vfs-clone-acl

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

vfs-clone-acl

类别: 权限残留 影响范围: 本地

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

CloneVerb 使用 TryCreateDirectoryAccessibleByAuthUsers 创建 PrimaryEnlistmentRoot。该辅助函数为 NT AUTHORITY\Authenticated Users 添加 GENERIC_READ|WRITE|EXECUTE|DELETE 权限,并带有 ContainerInherit|ObjectInherit。注释中讨论的是同一用户提权与非提权访问的差异。而该 SID 代表的是所有已认证用户。

在受害者执行 gvfs clone 之后,另一个已登录用户可以向该目录树中写入内容,包括 src\.git\hooks。仓库仍归受害者所有,因此 git 的 safe.directory 不会阻止该操作。

ID暂无 CVE
类别权限残留(目录 ACL 权限过宽 / 植入 hook)
影响范围本地
CWECWE-732、CWE-276
CVSS高危:7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
产品VFS for Git
受影响版本master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a(标签 v2.0.26259.1)。仅限 Windows。
认证本地。受害者执行 gvfs clone。攻击者为另一个已认证用户。
许可证GNU Affero GPL v3.0
实验环境仅限 127.0.0.1。how=gadget(无原生 Windows / ProjFS)。

这是在下一个 git/GVFS hook 触发时以克隆者身份实现的本地主机 RCE。并非 SYSTEM shell。实验环境仅植入了一个金丝雀文件;并未执行 hook。

攻击者能做什么

受害者已使用 GVFS 完成克隆。攻击者是另一个已登录的 Authenticated Users 主体。

权限方法 / 汇聚点授予的能力侦察 / 完整性 / 可用性实验验证或推断
在 enlistment 根目录继承 GENERIC_WRITECloneVerb 调用 TryCreateDirectoryAccessibleByAuthUsers(PrimaryEnlistmentRoot)每个已认证用户都可写入该目录树完整性已在 gadget 上实验验证。icacls 行为 NT AUTHORITY\Authenticated Users:(OI)(CI)(GR,GW,GE,D),SID S-1-5-11,掩码 0xe0010000
将该 ACE 继承到子项,包括 .git/hooksContainerInherit | ObjectInherithooks 目录可被攻击者写入完整性实验验证。authusers_hooks=yes
以攻击者身份在 src/.git/hooks 下植入文件写入 VFS-CLONE-ACL-WITNESS在受害者拥有的 hooks 目录中留下金丝雀完整性实验验证。所有者为攻击者 uid 1001,内容为 witness 文本
在下一个 git/GVFS 命令执行时以受害者身份运行植入的 hook在一次性克隆中覆盖 pre-command / GVFS 加载器以克隆者身份执行主机代码完整性推断。实验环境仅植入了一个金丝雀文件;并未执行 hook
以同样方式写入本地对象缓存LocalCacheResolver.cs 使用同一辅助函数缓存目录树可被 Auth Users 写入完整性推断。实验环境仅克隆了 enlistment 根目录
反面:仅所有者 ACL0700,无 Authenticated Users ACE攻击者写入被拒绝已关闭实验验证已关闭。攻击者写入返回 EACCES
全局可写 other::不适用POSIX other 写入已关闭实验验证已关闭。other_write=no
远程未认证写入不适用网络写入已关闭本地第二次登录
SYSTEM shell不适用LocalSystem已关闭下一个 hook 以克隆者身份运行,而非 LocalSystem

同一 pin 版本的其他残留问题:vfs-quote-breakout、vfs-mount-dehydrate、vfs-service-sid、vfs-hook-impersonate、vfs-install-cwd。

我是如何发现的

在 2026-09-28 合并之后,我固定了 VFSForGit master ab95cf51。Clone 使用一个辅助函数创建 enlistment 根目录,该函数的注释涉及 UAC 拆分令牌。其 SID 为 AuthenticatedUserSid。这代表的是每个已登录用户,而非创建该目录的用户。

已记录的弯路:将其视为全局可写的 other::(并非如此;POSIX other 没有写入权限);声称可获得 SYSTEM;在实验环境中执行植入的 hook。这些都是做戏。由于缺少原生 Windows,实验环境以 POSIX 命名组 ACL 的方式模拟了这些函数的行为。

实验环境

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

或

cd lab
./run.sh

Gadget HTTP 监听 127.0.0.1:19650。复制 TryCreateDirectoryAccessibleByAuthUsers 的行为,并以 POSIX 命名组 ACL(authusers)应用相同的 ACE。最后一行使用 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

修复方案

应授予创建该目录的用户(以及可选的 Administrators 以支持 UAC),而非 AuthenticatedUserSid。等效的 icacls 为仅对所有者授予 (OI)(CI)(M)。

参考资料

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

许可证

GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境。不提供任何担保。

下载工具