本仓库包含 CVE-2021-4034(即 PwnKit)的概念验证代码。仅用于个人学习和教育目的。请仅在您拥有或明确授权测试的环境中使用。
要构建该利用程序,您需要:
pkexec 是 Polkit 的一个实用程序,允许授权用户以另一用户身份执行程序(通常具有管理权限),类似于 sudo。CVE-2021-4034 是一个影响该二进制文件的内存损坏漏洞。问题源于当 argc == 0 时对参数的不正确处理。这导致了一个越界写入,使攻击者能够控制内存中第一个环境变量指针。在某些条件下,该漏洞允许非特权本地用户将权限提升至 root。更多详情可在此处获取:https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt
最终的利用程序完全自包含,无需外部库或额外的二进制文件。
发行版: Ubuntu 20.04 LTS
内核版本: 5.4.0-42-generic
Polkit 版本: 0.105-26ubuntu1(未打补丁)
包含的 shell(shell.asm)是用 x86_64 汇编语言编写的,适用于 Linux。它被编译成一个共享对象(.so)并嵌入到利用程序中。
可选地,shell 可以用 C 语言实现,以便在不同发行版间获得更好的可移植性,但为学习目的和练习底层汇编编码,保留了 ASM 版本。
注意: 该利用程序和 shell 仅兼容 x86_64 Linux 环境。使用其他架构(如 ARM 或 i386)将无法工作。
编译:
make
运行:
./exploit
清理:
make clean
该漏洞已于 2022 年 1 月修复。
如果您运行的是未打补丁版本的 policykit-1,您的系统可能容易受到攻击。作为临时缓解措施,您可以移除 pkexec 的 SUID 位:
chmod -s /bin/pkexec