文章总结: 本文分析WordPress捐款插件Give-Tributes的CVE-2026-19658漏洞,CVSS评分9.8,属未认证PHP反序列化漏洞。漏洞源于校验与写入逻辑使用不同数据副本,攻击者可匿名提交恶意序列化数据,待管理员后台触发,若存在gadgetchain可致RCE。影响2.3.1及以下版本,2.3.1.1已修复。建议立即升级插件,关闭多收件人功能,并审计站点其他插件是否存在POP链。 综合评分: 88 文章分类: 漏洞分析,红队,渗透测试,安全工具
(9.8分) CVE-2026-19658:WordPress捐款插件反序列化漏洞
红队安全圈 红队安全圈
红队安全圈
2026年9月22日 20:00 重庆
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
CVSS 9.8,WordPress 捐款插件 Give – Tributes 未认证 PHP 反序列化:一次匿名表单提交投毒,等管理员在后台触发,有 gadget chain 就是 RCE。
01 引言
WordPress 捐款插件 Give – Tributes(GiveWP 生态)爆出一个 CVSS 9.8 的严重漏洞:未认证的 PHP 反序列化(PHP Object Injection)。攻击者只需要提交一次捐款表单,就能把恶意序列化对象写进站点数据库,等管理员预览或重发 eCard 时触发反序列化——如果站点上存在可用的 gadget chain,就直接 RCE。PoC 已经公开,影响 2.3.1 及以下全部版本,2.3.1.1 修复。
02 漏洞速览
漏洞编号CVE-2026-19658
影响组件Give – Tributes(依赖 GiveWP)
影响版本≤ 2.3.1(2.3.1.1 已修复)
漏洞类型PHP 反序列化(CWE-502)
危害等级CVSS 9.8 Critical
认证要求无需认证(legacy 捐款表单)
公开 PoC已公开(GitHub)
触发条件多收件人开启 + legacy 表单
03 漏洞成因
这个洞的根因是插件内部两套输入处理的不一致,非常经典的一场”清洗了一份数据、却读了另一份”。
当 eCard 开启 Allow Multiple Recipients 且 Custom Message 关闭(这是默认配置)时,插件把用户提交的 eCard 收件人数据原样存进捐款 meta:
-
GiveWP 的字段校验用的是 give_clean() 清洗过的 $_POST 副本——在这份副本里,序列化字符串会被清空
-
但 insert_tribute_data() 读的却是未经清洗的原始 $_POST
-
于是第二个收件人的 first_name / last_name 字段可以塞入任意 PHP 序列化对象
-
这份恶意数据被存进数据库,之后在读取时(比如管理员预览/重发 eCard)被 unserialize()
也就是说,写入方信任了校验方已经处理过的假象,实际落库的是脏数据。反序列化的触发点在后台,这让漏洞带有存储型特征:投毒一次,等管理员踩雷。
影响判断上要说清一点:Give Tributes 插件自身没有已知的 POP chain,所以单独装它并不能直接 RCE——实际危害取决于站点上另一个插件或主题里有没有可用的 gadget chain。这也是这类反序列化漏洞的通用逻辑:入口在 A 插件,武器在 B 插件。
04 影响范围
受影响:Give – Tributes 2.3.1 及以下全部版本。
已修复:2.3.1.1 及以上,对多收件人 eCard 字段做了清洗。
依赖 GiveWP 核心,且要求存在 legacy 捐款表单([give_form] / v2),纯 v3 的 Visual Form Builder 不受此路径影响。
05 利用分析
公开 PoC(GitHub 仓库 murrez/CVE-2026-19658)是一个 Python 3 的扫描+利用工具,按它的实际用法拆解。
服务端前提
-
Give Tributes 2.3.1 及以下
-
Allow Multiple Recipients 已开启(全局或单表单)
-
eCard Custom Message 关闭(默认)
-
存在公开的 legacy Give 表单
-
有能完成捐款的支付网关(测试环境常用 manual)
检测模式
python poc.py -u https://target.example
–mode check
批量检测:
python poc.py –list targets.txt
–mode check –threads 20 –flow
check 模式的状态值含义:candidate 表示漏洞插件+legacy 表单齐全,是最有价值的候选;patched 表示版本已修复;vulnerable_no_form 表示插件在但没找到合适表单。注意远程扫描没法确认多收件人开关是否打开,candidate 在利用阶段仍可能失败。
利用模式
python poc.py -u https://target.example
–mode exploit
–form-url /donate/
–form-id 123
–gateway manual
–payload ‘O:8:”stdClass”:0:{}’
payload 就是第二个收件人的 first_name 字段值,一个 PHP 序列化对象。
请求形态(legacy 表单 POST)
give_tributes_show_dedication=yes
give_tributes_would_to=send_eCard
give_tributes_ecard_notify
[recipient][first_name][]=Valid
give_tributes_ecard_notify
[recipient][first_name][]
=
give_tributes_ecard_notify
[recipient][email][]=
give_tributes_ecard_notify
[recipient][email][][email protected]
payload 放在第二个 first_name 数组元素里——这正是清洗函数和读取逻辑没对齐的那个字段。
实战注意点
-
manual 网关在生产环境通常关闭,要改用表单上实际可见的网关(stripe、paypal、test 等)
-
成功判定看 Give 收据标记,不是页面里出现 thank you 就算成功——同样的 URL 表单还在也不算
-
报 give validation rejected donation 说明 tribute 选项、金额或网关不匹配
-
HTTP 403 是 WAF(Sucuri、MalCare 等)拦了 POST
-
v3-only 表单走不通 legacy 端点,跳过或找 legacy 表单地址
06 资产测绘
用 FOFA 找目标(仅限授权测试):
body=”give-tributes”
body=”give-tributes” && body=”givewp”
仓库还带了 fofa_to_list.py,可以把 FOFA 导出的 CSV 直接转成目标列表:
python fofa_to_list.py -i fofa_export.csv
python poc.py –list list.txt
–mode check –threads 20
07 检测与排查
判断自己站点是否装了受影响插件:
curl -s https://your-site/ |
grep give-tributes
确认版本:查看插件目录 wp-content/plugins/give-tributes/readme.txt 或后台插件页,2.3.1 及以下即受影响。
也可以查数据库里的捐款 meta,看是否已有可疑序列化数据(O: 开头的长字符串出现在 eCard 收件人字段)。
08 修复建议
-
立即升级 Give – Tributes 到 2.3.1.1 或更高
-
临时缓解:关闭 Allow Multiple Recipients,或停用插件
-
排查层面:审计站点其他插件/主题是否存在可被利用的 POP chain——这是判断实际风险的关键
09 红队视角
这个洞的实战价值在于它的攻击模型:未认证入口 + 存储型触发。投毒只要一次匿名表单提交,触发点在管理员后台——很适合做权限升级链的最后一环。攻防演练里遇到 GiveWP 站点,可以优先摸一下插件版本。
但也要冷静:没有 gadget chain 就是哑弹。实战前先盘点目标站点的插件清单,找有没有已知 POP 链的组件(常见于老版本的主题框架、备份插件、表单插件)。工具链层面,把 check 模式批量跑一遍资产,比逐个手测效率高得多。
防御方记住一句:任何把原始 $_POST 直接落库的代码路径都值得审一遍,尤其是校验逻辑和写入逻辑用了不同数据副本的场景——这次就是典型的双份数据不同步。
10 POC 链接
https://github.com/murrez/CVE-2026-19658
说明:Python 3 扫描+利用 PoC,含 check/exploit 两种模式,仅供授权测试使用。
如果文章对您有收获,欢迎关注、点赞、推荐、转发。
— END —
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:红队安全圈 红队安全圈 红队安全圈《(9.8分) CVE-2026-19658:WordPress捐款插件反序列化漏洞》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论