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替代, 布尔盲注, 数字取证, 数据导出, 无后门, 时间盲注, 暴力破解, 漏洞验证, 盲注, 网络安全, 自动化脚本, 逆向工具, 隐私保护, 靶场练习