IPBUF安全漏洞报告
English
CVE-2026-3516 CVSS 6.4 中危

CVE-2026-3516 WordPress Contact List插件存储型XSS漏洞

披露日期: 2026-03-21

漏洞信息

漏洞编号
CVE-2026-3516
漏洞类型
存储型跨站脚本
CVSS评分
6.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WordPress Contact List Plugin

相关标签

XSSWordPressStored XSSCVE-2026-3516Web SecurityPlugin Vulnerability

漏洞概述

WordPress Contact List插件在3.0.18及以下版本中存在存储型跨站脚本(XSS)漏洞。该漏洞源于处理Google Maps iframe自定义字段时缺乏足够的输入清理和输出转义。具有Contributor及以上权限的认证攻击者可利用`_cl_map_iframe`参数注入恶意Web脚本,该脚本将被存储并在前端页面渲染时触发,从而执行任意代码,影响访问该页面的用户。

技术细节

漏洞核心在于插件对Google Maps iframe自定义字段的处理机制。在`class-contact-list-custom-fields.php`的`saveCustomFields()`函数中,开发者使用正则表达式提取`<iframe>`标签,旨在保留iframe结构但未对标签内部的属性(如`onload`、`onerror`等事件处理器)进行严格的白名单验证或清理。攻击者利用这一点,可以在iframe标签中添加恶意的JavaScript事件处理器。数据通过`update_post_meta()`存入数据库后,前端页面`class-cl-public-card.php`在渲染时直接调用该数据,未使用`wp_kses()`或`htmlspecialchars()`进行转义,导致存储在数据库中的恶意脚本在用户浏览器中执行。此漏洞要求攻击者至少拥有Contributor级别的账户权限。

攻击链分析

STEP 1
1. 获取权限
攻击者注册或获取一个具有Contributor(投稿者)及以上权限的WordPress账户。
STEP 2
2. 注入Payload
攻击者编辑联系人或相关页面,在Google Maps iframe自定义字段(_cl_map_iframe)中输入包含恶意事件处理器的iframe标签。
STEP 3
3. 数据存储
插件后端的saveCustomFields()函数使用正则提取iframe标签,未过滤恶意属性,将Payload通过update_post_meta()存储到数据库中。
STEP 4
4. 触发漏洞
当普通用户或管理员访问受影响的前端页面时,class-cl-public-card.php直接输出未转义的数据。
STEP 5
5. 执行脚本
浏览器解析iframe标签并触发onload事件,执行攻击者注入的JavaScript代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC for CVE-2026-3516 Target parameter: _cl_map_iframe Description: Inject a malicious iframe with an onload event handler. --> <iframe src="about:blank" onload="alert('CVE-2026-3516 Stored XSS')"></iframe>

影响范围

WordPress Contact List Plugin <= 3.0.18

防御指南

临时缓解措施
建议立即将插件升级到最新版本以修复此漏洞。如果暂时无法升级,应限制Contributor及以上权限用户的编辑能力,或者暂时禁用该插件中的Google Maps iframe功能,直到应用安全补丁。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表