CVE-2026-3997WordPress Text Toggle插件在1.1及以下版本中存在存储型XSS漏洞。该漏洞源于插件对`[tt_part]`和`[tt]`短代码中的'title'属性缺乏输入清理和输出转义。攻击者可利用此缺陷注入双引号突破HTML属性限制,进而插入任意JavaScript代码。拥有Contributor及以上权限的认证攻击者可在页面中植入恶意Web脚本,当用户访问受影响页面时触发执行,可能导致会话劫持或权限提升。
该漏洞的核心在于WordPress Text Toggle插件对短代码属性处理的不当机制。具体而言,漏洞触发点位于`avp_texttoggle_part_shortcode`函数中。当插件解析`[tt_part]`或`[tt]`短代码时,会提取用户传入的`title`参数。代码逻辑虽然对`class`属性使用了`ctype_alnum()`函数进行字母数字验证,防止了该路径的注入,但完全忽略了对`title`属性的清理。
在源码的第116行,`title`值被直接拼接到HTML元素的属性值位置(如`<div title="$title">`);而在第119行,它又被直接输出为文本内容。这种双重输出点增加了攻击面。攻击者可以利用双引号字符(`"`)闭合原本的title属性,从而跳出属性上下文,进而注入恶意的HTML属性,例如JavaScript事件处理器(`onmouseover`, `onload`等)。
由于WordPress允许Contributor及以上级别的用户发布包含短代码的内容,一旦攻击者提交了包含Payload的文章,恶意脚本就会被持久化存储在数据库中。当管理员或其他普通用户访问该页面时,浏览器解析DOM,触发事件执行脚本,从而造成Cookie窃取、账户劫持或恶意操作等后果。这种存储型XSS攻击具有隐蔽性强、危害范围广的特点。