Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-4034 — 我出于学习目的分析了一个俗称 Pwnkit 的漏洞,并为其编写了 PoC。请严格用于学习目的。 | Kitploit
工具/GitHubGitHub/eshkoreee/cve-2021-4034
权限提升漏洞利用学习与教育Payload 开发二进制利用
GitHubeshkoreee/cve-2021-4034

CVE-2021-4034

我出于学习目的分析了一个俗称 Pwnkit 的漏洞,并为其编写了 PoC。请严格用于学习目的。

查看仓库
12天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-4034 (PwnKit) PoC

免责声明: 本材料仅供教育目的提供。未经目标系统所有者书面同意使用该漏洞利用程序是不道德的,并可能受到法律追究。

安装与运行

  1. 将仓库克隆到目标机器上。
  2. 为构建脚本赋予执行权限:chmod +x build.sh。
  3. 运行构建:./build.sh。
  4. 执行漏洞利用程序:./mls_envp。你将获得 root 权限。

漏洞本质

在存在漏洞的 polkit 版本(0.105)中,作者 David Zeuthen 假设 pkexec 始终会从控制台调用。他假定 argc(参数数量)始终大于 1,因为 argv[0] 是程序本身的名称。然而,可以通过系统调用 execve 传入空参数数组来调用 pkexec。这导致程序的逻辑被破坏。

1. 数组越界

在 pkexec 的代码中硬性假定 argv 至少包含一个元素。当 argc 等于 0 时,程序仍然尝试访问 argv[1]。这导致越界访问 argv 数组,并读取 envp 数组(环境变量)的第一个元素。在我们的例子中,那里存放着字符串 "exp_exe"。

2. 绕过 PATH 检查

pkexec 尝试使用 g_find_program_in_path 函数查找程序 exp_exe。该函数使用 PATH 变量进行搜索。我们将 PATH 替换为 GCONV_PATH=.。最终 pkexec 在我们本地文件夹中找到占位文件 exp_exe,并返回路径 GCONV_PATH=./exp_exe。由于 argc 的缺陷,该路径被写回 envp[0],从而“合法化”了 GCONV_PATH 变量。

3. 加载恶意库

在启动程序之前,pkexec 会检查环境变量(包括 SHELL)。我们传入一个不存在的 shell(SHELL=xyz)以触发错误。在输出错误时,会调用 log_message,它使用 glibc 的机制。Glibc 查看变量 CHARSET=bohemcavanna,在未找到标准转换器后,会访问 GCONV_PATH 指定的目录(即我们提供的目录)。在那里它读取 gconv-modules 文件,加载我们的库 exploit.so,并以 root 权限执行其中的代码。

下载工具