Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-10104-POC — Galería de video de producto para WooCommerce <= 1.5.1.8 - Prueba de Concepto de Cross-Site Scripting Almacenado Autenticado | Kitploit
Herramientas/GitHubGitHub/ravi-lk/cve-2026-10104-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónAprendizaje y Educación
GitHubravi-lk/cve-2026-10104-poc

CVE-2026-10104-POC

Galería de video de producto para WooCommerce <= 1.5.1.8 - Prueba de Concepto de Cross-Site Scripting Almacenado Autenticado

Ver Repositorio
247hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-10104: Cross-Site Scripting Almacenado en Product Video Gallery para WooCommerce

Resumen

DetalleValor
ID CVECVE-2026-10104
PluginProduct Video Gallery for WooCommerce
VendedorTechnoSoft Webs (NikHiL Gadhiya)
TipoCross-Site Scripting Almacenado (XSS)
CWECWE-79 — Neutralización incorrecta de la entrada durante la generación de la página web
CVSS 3.14.4 (Medio)
Versiones afectadas≤ 1.5.1.6
Versión corregida1.5.1.9
Requiere autenticaciónSí — Contributor+ (cualquier rol que pueda editar productos)
Descubierto porRavindu Lakmina Munaweera

Descripción

El plugin Product Video Gallery for WooCommerce para WordPress (versiones hasta la 1.5.1.6 incluida) es vulnerable a Cross-Site Scripting Almacenado (XSS) a través del parámetro de metadatos del producto custom_thumbnail.

El método save_wc_video_url_field() del plugin sanitiza el parámetro POST custom_thumbnail[] usando sanitize_text_field(), que elimina las etiquetas HTML pero no elimina los caracteres de comillas dobles ("). En el frontend, el valor almacenado se inserta directamente en los atributos de una etiqueta `` en nickx_get_video_thumbanil_html() sin escape esc_attr(). Esto permite que un atacante autenticado inyecte atributos de manejador de eventos HTML arbitrarios (por ejemplo, onmouseover, onerror) que ejecutan JavaScript en el navegador de cualquier visitante — incluidos usuarios no autenticados — que vea la página del producto afectada.


Vector CVSS 3.1

CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N
MétricaValor
Vector de ataqueRed
Complejidad de ataqueBaja
Privilegios requeridosBajos
Interacción del usuarioNinguna
AlcanceCambiado
Impacto en confidencialidadBajo
Impacto en integridadBajo
Impacto en disponibilidadNinguno

Código afectado

Sink (Salida — Sin Escape)

Archivo: public/class-rendering.php
Método: nickx_get_video_thumbanil_html()

// Línea 365 — valor insertado sin esc_attr()
$custom_thumbnail = isset($custom_thumbnails[$key]) && !empty($product_video_thumb_id) 
    ? 'custom_thumbnail="' . $custom_thumbnails[$key] . '"' 
    : '';

// Línea 379 — renderizado dentro de la etiqueta  en el frontend público
echo '';

Source (Guardado — Sanitización Insuficiente)

Archivo: admin/class-video-field.php
Método: save_wc_video_url_field()

// Líneas 309-310 — sanitize_text_field() elimina etiquetas pero NO comillas dobles
if ( isset( $_POST['custom_thumbnail'] ) ) {
    update_post_meta( $post_id, '_custom_thumbnail', 
        array_map( 'sanitize_text_field', $_POST['custom_thumbnail'] ) );
}

Prueba de concepto

Prerrequisitos

  • WordPress con WooCommerce instalado
  • Plugin: Product Video Gallery for WooCommerce ≤ 1.5.1.6
  • Un producto de WooCommerce con una URL de video de YouTube configurada
  • Una cuenta con privilegios de edición de productos (Administrador de Tienda, Autor, etc.)

Pasos para reproducir

  1. Inicia sesión como Administrador de Tienda (atacante).

  2. Navega a Productos → Editar cualquier producto que tenga una URL de video configurada en el campo "Product Video Url".

  3. Abre las Herramientas de Desarrollo del navegador (F12) → pestaña Consola.

  4. Pega y ejecuta el siguiente JavaScript:

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

// Establecer el ID del thumbnail a un valor no vacío (requerido por la condición de renderizado)
const thumbInput = document.querySelector('input[name="product_video_thumb_url[]"]');
if (thumbInput) { thumbInput.value = '99999'; }

// Inyectar payload XSS a través de custom_thumbnail
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. Haz clic en "Actualizar" para guardar el producto.

  2. Abre la página del producto en el frontend en una ventana incógnito/privada (no autenticada).

  3. Pasa el ratón sobre el thumbnail del video en la galería del producto.

  4. ✅ Se ejecuta la alerta de JavaScript, confirmando el XSS Almacenado.

imagen imagen

Salida Renderizada

La " inyectada cierra el atributo custom_thumbnail, y onmouseover se convierte en un nuevo atributo ejecutable en el elemento ``.


Impacto

  • XSS Almacenado se ejecuta en el frontend público para todos los visitantes, incluidos usuarios no autenticados
  • Los atacantes pueden robar cookies de sesión y secuestrar cuentas de administrador
  • Los atacantes pueden redirigir a los clientes a sitios de phishing o distribución de malware
  • Los atacantes pueden desfigurar páginas de productos o inyectar cryptomineros
  • Solo se requiere acceso de nivel Colaborador para explotarlo

Corrección

Aplica esc_attr() al valor del thumbnail personalizado antes de insertarlo en el atributo HTML:

- $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]) . '"' 
+     : '';

Esta misma corrección debe aplicarse a todas las instancias en nickx_get_video_thumbanil_html() donde se construye $custom_thumbnail (tanto en la ruta de array como en la de no array).


Cronología de divulgación

FechaEvento
2026-03-20Vulnerabilidad descubierta
2026-03-20Reportado a Wordfence (CNA)
2026-05-29ID CVE asignado: CVE-2026-10104
2026-07-01Divulgación pública

Créditos

  • Descubierto por: Ravindu Lakmina Munaweera
  • CVE asignado por: Wordfence (CNA)
  • CVE ORG

Referencias

  • CVE-2026-10104
  • Página del plugin de WordPress
  • Entrada de la base de datos de vulnerabilidades de Wordfence
  • CWE-79: Cross-site Scripting
  • Hoja de referencia de prevención de XSS de OWASP

Licencia

Este aviso se publica bajo CC BY 4.0.

Descargar herramienta