JM00NJ/CVE-2025-6019-udisks2-XFS-Resize-TOCTOU-Privilege-Escalation
GitHub: JM00NJ/CVE-2025-6019-udisks2-XFS-Resize-TOCTOU-Privilege-Escalation
CVE-2025-6019 PoC,利用 udisks2 XFS 调整大小功能的 TOCTOU 竞态条件实现本地权限提升。
Stars: 1 | Forks: 0
CVE-2025-6019:udisks2 XFS 调整大小 TOCTOU 本地权限提升
本仓库包含 CVE-2025-6019 的概念验证,这是 udisks2 中的一个竞态条件漏洞,允许通过 XFS 文件系统调整大小进行本地权限提升。
### 🎯 目标环境与兼容性
此漏洞利用程序专为满足以下条件的任何 Linux 系统设计:
易受攻击服务:udisks2(已启用 D-Bus 访问)。
文件系统工具:已安装 xfsprogs(特别是 mkfs.xfs)。
架构:无关(适用于 x86、x64、ARM 等)。
### ✅ 已测试环境
该漏洞利用程序已在以下配置上通过验证:
* **OS:** openSUSE Leap 15.6
* **内核:** Linux 6.4.0-150600.23.65-default (x86_64)
* **虚拟化:** VMware
* * **目标:** udisks2(通过 D-Bus)
*注意:`weapon.py` 脚本会自动处理环境 PATH 设置以定位 `mkfs.xfs`,该程序通常仅限于 sbin 目录。*
### 🛡️ Protofile 的作用
利用该漏洞需要一个使用 Protofile 特制 的 XFS 镜像。这允许我们定义一个包含 SUID root 二进制文件 的文件系统结构,而无需在镜像创建阶段拥有 root 权限。mkfs.xfs 的 -p 标志使用此模板将 SUID 位直接嵌入到镜像的元数据中。
### 🚀 漏洞利用指南(手动方法)
### 第 1 步:绕过 Polkit 限制
远程会话(SSH、Docker)中的标准用户受限于无法使用 `udisks2`。运行此脚本以伪造一个本地会话(`seat0`):
python3 bypass.py
### 第 2 步:武器化(镜像创建)
使用 weapon.py 生成 SUID 镜像。此脚本使用 XFS protofile 嵌入一个具有 4755 权限的 shell。
python3 weapon.py
### 第 3 步:触发竞态
执行 trigger.sh 以开始向 udisks2 泛洪 D-Bus 调整大小请求。这会强制守护进程在 /tmp/blockdev.XXXXXX 中创建临时挂载点。
chmod +x trigger.sh
./trigger.sh
### 第 4 步:赢得竞态(手动执行)
由于自动化脚本在资源受限的环境中可能不稳定,建议使用手动方法:
监控 /tmp 中的临时挂载点:
watch -n 0.1 "ls -la /tmp"
识别目标:寻找具有全局可读权限(例如 drwxr-xr-x)的目录,而不是默认的加固权限 drwx------。
执行 Payload:一旦识别,进入该目录并执行 shell:
cd /tmp/blockdev.Q797J3 # 示例目录名
./pwnbash -p
结果:如果在竞态窗口内(应用 nosuid 标志之前)执行,你将获得一个 root shell。
### 📁 文件描述明
bypass.py:配置脚本,用于伪造本地会话(seat0)并通过 ~/.pam_environment 绕过 Polkit 限制。
weapon.py:使用 XFS Protofile 模板的 SUID 镜像生成器。
trigger.sh:用于 udisks2 文件系统调整大小的 D-Bus 竞态条件触发器。
详细分析请参阅:
👉 NetaCoding - https://netacoding.blogspot.com/2026/02/new-vulnerability-analysis-udisks2-xfs.html
### ⚠️ 免责声明
本项目仅用于教育和授权安全测试目的。未经授权访问计算机系统是非法的。
标签:Cutter, CVE-2025-6019, D-Bus, mkfs.xfs, PoC, Polkit绕过, SUID, Sysmon, TOCTOU, udisks2, Web报告查看器, XFS, xfsprogs, 协议分析, 文件系统, 暴力破解, 本地提权, 权限提升, 竞态条件, 网络安全, 逆向工具, 隐私保护