(9.8分)CVE-2026-19658:WordPress捐款插件反序列化漏洞

admin 2026-09-23 05:24:04 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析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:

  1. GiveWP 的字段校验用的是 give_clean() 清洗过的 $_POST 副本——在这份副本里,序列化字符串会被清空

  2. 但 insert_tribute_data() 读的却是未经清洗的原始 $_POST

  3. 于是第二个收件人的 first_name / last_name 字段可以塞入任意 PHP 序列化对象

  4. 这份恶意数据被存进数据库,之后在读取时(比如管理员预览/重发 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 的扫描+利用工具,按它的实际用法拆解。

服务端前提

  1. Give Tributes 2.3.1 及以下

  2. Allow Multiple Recipients 已开启(全局或单表单)

  3. eCard Custom Message 关闭(默认)

  4. 存在公开的 legacy Give 表单

  5. 有能完成捐款的支付网关(测试环境常用 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捐款插件反序列化漏洞》

评论:0   参与:  0