漏洞概述 漏洞名称: Stored XSS via Unescaped Menu Item Fields in TopMenu Plugin 描述: 软件: WWBN/Avideo 受影响版本: < 26.0 已修复版本: 无 严重程度: 中等 (6.1 / 10) 摘要: TopMenu 插件将菜单项字段(图标类、URL 和文本标签)直接渲染到 HTML 中,未应用 或其他输出编码。 由于菜单项在公共页面上通过插件钩子渲染,单个恶意菜单项会导致存储型跨站脚本攻击,影响所有访问该站点的用户。 管理员被诱骗保存恶意菜单项(或通过获得管理员访问权限的攻击者)可以损害所有站点用户。 详细信息: 多个输出位置在 TopMenu 插件渲染器中未对用户可控数据进行转义: - :图标类未转义 - :URL 未转义 - :左菜单的相同模式 - :菜单项文本未转义 菜单项数据通过 保存,setter 方法中无 sanitization。存储的值从数据库加载并在每次页面渲染时通过 TopMenu 插件钩子全局布局渲染。 关键问题: 没有 CSRF 保护。它检查用户是否为管理员,但不调用 或执行其他 CSRF 令牌验证。这意味着存储的 XSS 可以与 CSRF 结合使用,攻击者无需利用已泄露的管理员账户。相反,攻击者控制的页面可以通过跨源 POST 创建恶意菜单项,只要管理员在登录状态下访问攻击者的页面。 影响范围 存储型跨站脚本:在 AVideo 实例的每个页面上。 攻击者可以: - 窃取会话 cookie - 重定向用户到钓鱼网站 - 修改页面内容 - 以认证用户(包括管理员)的身份执行操作 全局影响:单个注入点影响所有访问者。 修复方案 应用 函数:对所有 、 和 的输出应用 函数,使用 和 参数。 具体文件: - - - - - POC 代码 1. 作为管理员保存带有恶意图标类的菜单项: 2. 通过 URL 字段注入 JavaScript 脚本: 3. 通过文本字段注入: 4. 利用 CSRF(无需管理员账户): 5. 访问 AVideo 实例的任何页面: 6. 注入的 JavaScript 脚本在每次访问 AVideo 实例的每个页面的浏览器会话中执行。 其他信息 CVSS v3 基础指标: - 攻击向量:网络 - 攻击复杂度:低 - 所需权限:无 - 用户交互:必需 - 范围:改变 - 机密性:低 - 完整性:低 - 可用性:无 弱点: CWE-79 发现者: adrgs 和 aisafe-bot