Happy Addons for Elementor <= 3.20.4 — 已认证(贡献者+)二阶SQL注入
| CVSS | 8.5 高 |
| 影响版本 | <= 3.20.4 |
| 已修复 | 3.20.6 |
| 最低权限 | 贡献者 (edit_posts) |
| 攻击向量 | 网络 / 低复杂度 / 低权限 |
duplicate_meta_entries() 位于 classes/clone-handler.php 中,它使用手写的批量 INSERT 将文章元数据行复制到克隆的文章。它使用 $wpdb->prepare() 安全地获取行,但随后将 $entry->meta_key 直接插入 SQL 字符串而不进行转义:
$_records[] = "( $duplicated_post_id, '{$entry->meta_key}', '{$_value}' )";
// ...
$wpdb->query( $query );
由于 meta_key 来自数据库,代码将其视为可信。但贡献者可以通过自定义字段面板设置任意字段名称——因此他们控制该列中的内容。
攻击分为两步:
add_post_meta() 安全地处理此操作——有效载荷进入数据库而不执行任何操作。duplicate_meta_entries() 读回键并将其连接到原始 INSERT 中。MySQL 执行注入的子查询。静态分析会遗漏这一点,因为危险数据的来源是数据库读取($wpdb->get_results()),污点引擎将其标记为已清理。存储边界打破了污点链。
任何贡献者都可以提取:
wp_options 中的任何行(API 密钥、支付凭据)披露时超过 40 万活跃安装受到影响。
pip install requests
python3 poc.py https://target.com contributor p4ss
该脚本通过 HTTP 进行身份验证,将注入有效载荷存储为自定义字段名称,触发 Happy Clone 操作,并从克隆文章的元字段中读取泄露的哈希。输出保存到 hash.txt。
hashcat -m 400 hash.txt rockyou.txt
https://folks-iwd.github.io/writeups/cve-2025-68999.html
| 日期 | 事件 |
|---|---|
| 2025年12月 | 通过 SVN 差异发现。PoC 得到确认。 |
| 2025年12月 | 向 Patchstack Alliance 报告完整文章和 PoC。 |
| 2026年1月 | weDevs 在 v3.20.6 中发布了修复。 |
| 2026年1月23日 | CVE-2025-68999 发布。分配 CVSS 8.5 高。 |
weDevs 将整个手写的 INSERT 替换为:
foreach ( $entries as $entry ) {
update_post_meta( $duplicated_post_id, $entry->meta_key, $entry->meta_value );
}
update_post_meta() 内部调用 $wpdb->update(),并对键和值都使用预处理语句。