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

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-7867-disk2root — 针对 udisks2 中 CVE-2026-7867 的武器化本地权限提升漏洞利用,通过 as-user 挂载欺骗绕过 PolicyKit 并获取 root shell。 | Kitploit
工具/GitHubGitHub/azqzazq1/cve-2026-7867-disk2root
权限提升漏洞分析漏洞利用后渗透利用渗透测试学习与教育红队二进制利用实验室与实践
GitHubazqzazq1/cve-2026-7867-disk2root

CVE-2026-7867-disk2root

针对 udisks2 中 CVE-2026-7867 的武器化本地权限提升漏洞利用,通过 as-user 挂载欺骗绕过 PolicyKit 并获取 root shell。

184个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库





Filesystem.Mount → as-user 欺骗 → 授权绕过 → 根上下文挂载 → LPE


概述

CVE-2026-7867 是 udisks2 中的一个本地权限提升漏洞,涉及 Filesystem.Mount D-Bus 方法、as-user 选项、fstab 管理的挂载流程以及存在缺陷的授权处理。

此私有仓库包含在受控实验室环境中验证该问题所使用的技术研究笔记和 PoC 脚本。

该漏洞由以下人员发现并报告:

Azizcan Daştan azqzazq1
Özlem Ozan oz7oz7

该问题已被分配编号:

CVE-2026-7867

执行摘要

该漏洞源于真实 D-Bus 调用者 UID 与由 as-user 挂载选项计算得出的有效 UID 之间存在有缺陷的信任关系。

在易受攻击的流程中,无特权的本地用户可影响挂载执行路径,从而在未触发预期 PolicyKit 授权行为的情况下,以特权/根上下文执行文件系统挂载。

该核心漏洞并不仅仅是“用户可控的挂载选项”。

真正的问题在于:

udisks2 在 fstab 挂载授权和执行期间,无法始终如一地区分原始调用者身份与计算得出的 as-user 身份。


漏洞概览

字段值
CVECVE-2026-7867
产品udisks2
组件Filesystem.Mount
攻击类型本地权限提升
原语as-user 欺骗
安全边界D-Bus 调用者身份 → 特权挂载执行
授权层PolicyKit / fstab 挂载授权
厂商Red Hat / udisks 上游
状态补丁开发中 / 协同披露
计划修复版本udisks 2.11.2

影响区域

易受攻击的逻辑与 udisks2 内部的 fstab 挂载处理路径相关,尤其是当挂载请求涉及以下内容时:

Filesystem.Mount
as-user
x-udisks-auth
user
users

相关的安全敏感区域包括:

D-Bus caller identity
        ↓
as-user option handling
        ↓
fstab authorization logic
        ↓
PolicyKit decision flow
        ↓
root-context mount execution

攻击流程

┌─────────────────────────────┐
│ Unprivileged Local User     │
└──────────────┬──────────────┘
               │
               │ Filesystem.Mount
               │ with as-user influence
               ▼
┌─────────────────────────────┐
│ udisks2 / udisksd           │
│ privileged system daemon    │
└──────────────┬──────────────┘
               │
               │ fstab logic evaluates
               │ user/auth options
               ▼
┌─────────────────────────────┐
│ Authorization Gap           │
│ mount_other_user not        │
│ enforced in skipped path    │
└──────────────┬──────────────┘
               │
               │ root-context branch reached
               ▼
┌─────────────────────────────┐
│ Filesystem Mounted          │
│ without expected auth flow  │
└──────────────┬──────────────┘
               │
               │ impact depends on mount flags
               ▼
┌─────────────────────────────┐
│ Local Privilege Escalation  │
│ controlled lab validation   │
└─────────────────────────────┘

根本原因

易受攻击的行为源于一个身份混淆缺陷。

系统存在多个身份概念:

real D-Bus caller UID
computed as-user UID
effective mount UID
udisksd daemon privilege context

易受攻击的流程未能一致地强制执行这些身份。

具体而言:

  • 由于使用了 as-user,mount_other_user 可能变为 true
  • x-udisks-auth、user 或 users 等 fstab 选项可能影响授权路径
  • 授权块可能被跳过
  • 在该块之外,mount_other_user 检查无法得到可靠执行
  • 挂载路径可能到达为真正的 root/管理员执行而设计的分支
  • 挂载由特权守护进程上下文执行

结果是本地权限边界被绕过。


x-udisks-auth 问题

x-udisks-auth 选项本应强制实施管理性 PolicyKit 授权流程。

预期行为:

mount request
    ↓
attempt mount as caller
    ↓
permission/auth failure
    ↓
PolicyKit filesystem-fstab check
    ↓
admin approval
    ↓
mount as authorized privileged action

易受攻击的行为:

mount request with as-user influence
    ↓
computed identity affects execution
    ↓
mount succeeds too early
    ↓
PolicyKit auth path is not reached as expected
    ↓
privileged mount state is achieved

这使得易受攻击路径中围绕 x-udisks-auth 的安全模型变得不可靠。


安全模型违反

预期模型:

Unprivileged user
    ↓
D-Bus mount request
    ↓
PolicyKit / fstab authorization
    ↓
restricted mount behavior

被破坏的模型:

Unprivileged user
    ↓
D-Bus mount request with as-user spoofing
    ↓
authorization logic mismatch
    ↓
root-context mount execution

该漏洞尤其严重,因为受影响的进程以提升的特权运行。


影响

成功利用可能允许本地无特权用户通过 udisks2 在根上下文执行路径中挂载文件系统,而无需预期的授权提示。

根据文件系统和挂载标志的不同,影响可能包括:

  • 本地权限提升
  • 未经授权的根上下文文件系统挂载
  • 绕过预期的 PolicyKit 授权
  • 不安全的 fstab 管理设备挂载
  • 受影响实验室配置中基于 setuid 的权限提升
  • 从攻击者控制或预制的文件系统中意外执行文件

利用条件

这是一个本地漏洞。

相关条件包括:

条件是否必需
本地用户访问是
存在漏洞的 udisks2 版本是
存在 as-user 功能是
合适的 fstab 管理挂载目标是
存在漏洞的授权路径是
远程访问否

仓库结构

.
├── README.md
├── disk2root.sh              ← main exploit (self-contained LPE)
└── poc/
    ├── setup_lpe_env.sh       ← lab environment setup
    ├── f2_mount_as_user_bypass.sh
    ├── f2_check_nosuid.sh
    ├── f2_suid_test.sh
    ├── f2_final.sh
    └── cleanup_lpe_env.sh

利用 — disk2root.sh

自包含的武器化利用脚本。构建自己的 SUID root 载荷,创建预制磁盘镜像,通过 as-user=root polkit 绕过进行挂载,并进入 root shell。

快速开始

选项 1 — 以 root 身份运行(在任何环境下均有效,包括 SSH):

./disk2root.sh

该脚本会自动:

  1. 编译一个静态 SUID root shell 二进制文件
  2. 在 loop 设备上创建一个 32MB 的 ext4 镜像
  3. 通过 debugfs 以 uid=0 mode=4755 注入该二进制文件
  4. 添加包含 x-udisks-auth 的 fstab 条目
  5. 通过 su 切换到无特权用户
  6. 以 as-user=root 调用 Filesystem.Mount(polkit 绕过)
  7. 执行 SUID 二进制文件 → root shell
  8. 退出时清理所有内容

如需指定从哪个用户进行提权:

./disk2root.sh testuser

如果未指定用户,脚本会选择系统上第一个常规用户,或创建一个临时用户。


选项 2 — 以无特权用户身份运行(桌面 / 活动会话):

./disk2root.sh

在具有活动 polkit 会话的系统上(桌面登录、GNOME/KDE),该脚本完全自包含——它通过 udisksctl 或 D-Bus LoopSetup 创建自己的 loop 设备,通过 as-user=root 挂载,无需任何预先设置即可提权。


选项 3 — 以无特权用户身份运行(SSH,完成设置后):

如果环境已经准备就绪(例如通过以 root 身份运行 poc/setup_lpe_env.sh,或之前以 root 身份运行过 ./disk2root.sh),任何无特权用户都可以再次利用:

./disk2root.sh

该脚本会自动检测存在漏洞的 fstab 条目并使用它们。


清理

./disk2root.sh --cleanup

移除所有产物:fstab 条目、loop 设备、挂载点、临时用户。


策略级联

当以无特权身份运行时,脚本会按顺序尝试多种路径:

[A] Self-contained
    build payload → create ext4 image → debugfs inject SUID binary
    → loop-setup (python3 GIO / udisksctl) → mount as-user=root
    ✓ works on desktop sessions

[B] Fstab fallback
    scan /etc/fstab for x-udisks-auth / user / users entries
    → mount as-user=root → find SUID binary on mounted fs
    ✓ works on SSH when environment is prepared

示例输出

╔═════════════════════════════════════════════════════╗
║  CVE-2026-7867 — disk2root                          ║
║  udisks2 as-user polkit bypass → LPE root shell     ║
╚═════════════════════════════════════════════════════════╝

[*] uid=1002 (testuser) — exploiting...
    fstab: /dev/loop5 → /mnt/disk2root (x-udisks-auth)
    mounted: /mnt/disk2root
    nosuid: not set
    suid: pwn (4755 root:root)

╔═════════════════════════════════════════════════════╗
║  dropping into root shell — type 'exit' to return   ║
╚═════════════════════════════════════════════════════════╝
下载工具