Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2021-3560-exploit — CVE-2021-3560 — 通过 accounts-daemon D-Bus 竞态条件的 Polkit 权限提升利用 | Kitploit
工具/GitHubGitHub/jeanback1/cve-2021-3560-exploit
权限提升漏洞分析漏洞利用渗透测试学习与教育红队
GitHubjeanback1/cve-2021-3560-exploit

CVE-2021-3560-exploit

CVE-2021-3560 — 通过 accounts-daemon D-Bus 竞态条件的 Polkit 权限提升利用

查看仓库
2个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-3560 — Polkit 权限提升

CVE-2021-3560 是 Polkit(前身为 PolicyKit)中的一个本地权限提升漏洞,Polkit 是 Linux 桌面环境使用的授权框架。本地非特权攻击者可以利用 accounts-daemon D-Bus 接口中的竞态条件创建特权用户、设置其密码,并最终获得 root 访问权限。


工作原理

背景:Polkit + accounts-daemon

accounts-daemon(org.freedesktop.Accounts)是一个系统 D-Bus 服务,负责管理用户帐户(创建、删除、密码更改等)。它暴露了以下方法:

方法操作
CreateUser创建一个新系统用户
SetPassword设置用户密码
DeleteUser删除用户

这些操作需要授权。当 D-Bus 调用到达时,Polkit 位于调用方与 accounts-daemon 之间:

root@kitploit:~
调用方  →  D-Bus  →  Polkit(授权检查)  →  accounts-daemon(执行操作)

Polkit 决定调用方是否有权限,如果有,则将请求转发给 accounts-daemon 执行。

竞态条件

该漏洞是一个 TOCTOU(检查时与使用时) 竞态。关键在于:

  1. 向 accounts-daemon 发送一个 D-Bus 方法调用(例如 CreateUser)。
  2. Polkit 接收该调用并执行授权检查——通常依赖一个超时并返回“未授权”响应的 polkit 代理对话框。但由于一个 bug,Polkit 中的超时/错误处理错误地将某些错误条件视为成功,或者使守护进程侧的处理处于部分授权状态。
  3. 如果 D-Bus 调用在恰好正确的时间被终止——即在 Polkit 作出授权决定之后、但 accounts-daemon 完成处理之前——用户创建过程会绕过正确认证而通过,但用户记录最终不完整(例如没有密码、没有主目录)。
  4. 攻击者随后可以使用同样的竞态在新创建(但未认证)的用户上调用 SetPassword,或者不完整状态本身就会授予提升的权限。

简言之:在正确的时间终止请求,即可绕过认证。

该漏洞利用脚本的操作

这个 exploit.sh 脚本自动化了完整的攻击链:


使用方法

root@kitploit:~
# Clone the repository
git clone https://github.com/Jeanback1/CVE-2021-3560.git
cd CVE-2021-3560

# Make the exploit executable
chmod +x exploit.sh

# Run it
./exploit.sh

一旦漏洞利用完成,你将拥有一个 root shell:

root@kitploit:~
whoami
# root

示例输出

漏洞利用执行


受影响版本

组件受影响版本
polkit≤ 0.119(未修补)
accounts-daemon(accountsservice)所有使用受影响 polkit 的版本

该漏洞在 polkit 0.120 及更高版本中已修补。

已修补的发行版(非完整列表):

  • Ubuntu 20.02+(2021年6月之后的安全更新)
  • Debian 11+(安全更新后)
  • RHEL 8+ / CentOS 8+(通过勘误表)
  • Fedora 34+

免责声明

本仓库仅用于教育和授权的安全研究。请勿在你不拥有或未获得明确测试许可的系统上使用此漏洞利用工具。作者对滥用行为不承担任何责任。

下载工具
步骤操作
1. 时间校准使用一次虚拟的 CreateUser("nobody") 调用来测量 D-Bus 往返时间,计算出“终止窗口”
2. 创建用户为选定的用户名发送 CreateUser 调用,在后台启动它,休眠计算出的窗口,然后终止它——利用竞态创建一个未授权用户
3. 设置密码一旦用户存在(处于不完整状态),使用相同的竞态技术发送 SetPassword 调用,分配一个已知密码
4. 权限提升使用 su 切换到新用户,运行 sudo(由于用户是通过绕过授权的路径创建的,所以可以正常工作),将 /bin/bash 复制到 /var/tmp/bash 并设置 SUID root,然后生成一个 root shell