Polkit 的概念验证
Policy Toolkit(即 Polkit)自 2009 年发布以来,允许任何无 root 权限的攻击者轻松获得对安装了 Polkit 包的 Linux 系统的管理访问权限。不幸的是(也许不是),它在大多数 Linux 发行版中都是默认安装的,这使得该漏洞非常普遍。
幸运的是(也许不是),这个漏洞无法远程利用,因此它属于本地权限提升(LPE)漏洞。
Polkit 是大多数 Linux 授权系统的一部分。当执行任何需要管理权限的操作时,Polkit 会判断你是否拥有执行该操作所需的权限。它集成在 systemd(init 的替代品)中。实际上,根据 THM 的说法,systemd 被称为“systemd 的 sudo”。
当我们与 polkit 交互时,可以使用 pkexec(包含 Pwnkit 漏洞的程序)。例如,当我们尝试在 GUI 会话中使用 pkexec 执行 useradd 时,会弹出一个要求输入凭据的窗口。在 CLI 中,我们可以得到类似如下的内容:
user@user:~$ pkexec useradd test1
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run '/usr/sbin/useradd' as the super user
Authenticating as: user,,, (user)
Password:
显然,Canonical 已经在 APT 包管理器中发布了该包的安全更新版本。如果某些发行版尚未发布补丁版本,只需移除 pkexec 的 SUID 位即可。
sudo chmod 0777 'which pkexec'