lan1oc/cve-2026-5147-exp
GitHub: lan1oc/cve-2026-5147-exp
针对CVE-2026-5147的MySQL盲注利用脚本,支持布尔与时间盲注自动切换,可枚举库表结构并导出数据。
Stars: 0 | Forks: 0
# cve-2026-5147 利用脚本
面向 **已获授权** 的漏洞验证与靶场练习:对存在 SQL 注入的接口进行 MySQL **布尔盲注**(`EXP` / `INSTR` 或 `ASCII`)与 **时间盲注**(`if` + `ascii` + `sleep`),并可选拉取版本、库名、表结构及数据(行为类似 sqlmap 的 `--dump`)。
**请勿在未授权系统上使用。**
## 依赖
pip install requests
## 默认行为
1. **先做布尔校准**:向注入点发送两发 `CURRENT_USER` + `INSTR` 探针,用响应 JSON 中业务字段(默认 `code`)区分「真 / 假」分支。
2. **校准成功**:全程使用布尔盲注(`-p instr` 或 `ascii`)。
3. **校准失败**(侧信道与预期不符):自动切换到时间盲注,并再做一轮快慢请求校准。
4. **`--skip-calibrate`**:跳过上述校准;仍按布尔 + JSON 字段猜解,**不会**自动切时间(适合本地调试)。
判「真」的 JSON 字段名与取值可通过 `--json-code-field`、`--json-code-true` 调整(需与目标 API 一致)。
## 快速开始
# 仅域名:按默认路径拼接(见脚本内 DEFAULT_API_PATH)
python cve-2026-5147.py -u target.example.com
# 指定 HTTPS、自定义路径与注入参数名
python cve-2026-5147.py -u target.example.com --https --path /api/foo --param id
# 全库 dump(请求量极大,慎用)
python cve-2026-5147.py -u target.example.com dump
# 只拉表名串,不导数据
python cve-2026-5147.py -u target.example.com dump --schema-only
进度与诊断信息在 **stderr**,最终汇总在 **stdout**。
## 常用参数
| 参数 | 说明 |
|------|------|
| `-u` / `--url` | 目标(域名、host:port 或完整 URL),必填 |
| `--path` | 未带路径时拼在主机后的路径(默认租户类接口路径) |
| `--https` | 无 scheme 时使用 `https`(默认补 `http://`) |
| `--param` | 注入参数名(默认 `website`) |
| `-p` / `--payload` | 布尔片段:`instr` 或 `ascii`(时间盲注固定 `if+ascii+sleep`) |
| `--timeout` | HTTP 超时(秒);进入时间盲注时会自动不低于 `sleep+5` |
| `--sleep` | 时间盲注 `sleep()` 秒数 |
| `--time-floor` | 判真:总耗时 ≥ 该值(秒);默认约 `sleep - 1` |
| `--json-code-field` / `--json-code-true` | 布尔侧信道所读 JSON 字段及「真」值 |
| `--skip-calibrate` | 跳过探针校准 |
| `--only` | `version` / `database` / `both`:只拉版本、只拉库名或两者 |
| `-H` / `-P` | 附加请求头、额外查询参数,可重复 |
`dump` 子命令下还有 `--schema-only`、`--dump-out`、`--dump-row-limit`、`--dump-select` 等,见 `python cve-2026-5147.py -h`。
## 子命令
| 子命令 | 含义 |
|--------|------|
| `info`(默认) | 拉 `VERSION()`、当前库名 `DATABASE()`(受 `--only` 影响) |
| `dump` | 再拉当前库表名、逐表列名与行数据(或仅 schema,见 `--schema-only`) |
## 审查说明(代码层面)
- 主流程:`main()` 中先 `calibrate_sqli_oracle`,失败则 `effective_detect = "time"` 并 `bind_time_payload`;时间模式再 `calibrate_time_oracle`。
- 布尔进度日志中的 JSON 字段展示已与 `--json-code-field` 对齐(不再写死 `code`)。
- `command` 的 argparse 帮助已修正为默认子命令是 **`info`**,不是 `dump`。
## 许可证与责任
脚本仅供安全研究与授权测试。使用者需自行确保符合当地法律与目标环境授权范围。
标签:CISA项目, CVE-2026-5147, CVSS, DFIR, EXP, Maven, PNNL实验室, PoC, Python, SQLMap替代, 布尔盲注, 数字取证, 数据导出, 无后门, 时间盲注, 暴力破解, 漏洞验证, 盲注, 网络安全, 自动化脚本, 逆向工具, 隐私保护, 靶场练习