0x4meliorate/SQLBurp

GitHub: 0x4meliorate/SQLBurp

将 sqlmap REST API 集成到 Burp Suite 中的 Java 扩展,支持从 Burp 任意位置发起并发 SQL 注入扫描并将结果持久化至项目文件。

Stars: 3 | Forks: 0

# 🗡️ SQLBurp ![Java](https://img.shields.io/badge/java-17+-blue?logo=java&logoColor=white) ![Burp Suite](https://img.shields.io/badge/Burp_Suite-Extension-orange) ![sqlmap](https://img.shields.io/badge/sqlmap-REST%20API-red) 一个 Burp Suite 扩展,将 sqlmap REST API 集成到您的测试工作流中。您可以从 Burp 的任何位置发送请求,并发跟踪多个扫描,并查看持久化的结果。所有扫描数据都直接存储在 Burp 项目文件中,无需外部数据库。 image image ## 🚀 设置 **1. 下载 jar 包** 从 [Releases](../../releases) 页面下载最新的 `SQLBurp.jar`。 **2. 启动 sqlmap REST API** ``` python sqlmapapi.py -s -H 127.0.0.1 -p 8775 ``` 不需要 `--database` 参数。 **3. 加载扩展** `Extensions` -> `Add` -> `Extension Type: Java` -> 选择 `SQLBurp.jar`。 **SQLBurp** 选项卡将会出现。使用 **Ping** 按钮验证 API 是否可达。 ## 📖 用法 ### 发送请求 在 Proxy、Repeater、Target 或 Burp 中的任何其他位置右键单击任何请求,然后选择 **Send to SQLMap API**。扫描将使用当前 Options 选项卡的设置立即提交。 ### ⚡ Options 选项卡 Options 选项卡分为四个部分。 #### 核心选项 | 设置 | 描述 | | --- | --- | | API URL | 运行中的 sqlmapapi 服务器的地址 | | Level | 检测级别 (1-5) | | Risk | 风险级别 (1-3) | | Threads | 并发 HTTP 请求数 (1-10) | | Technique | 要测试的 SQLi 技术 (例如 `BEUSTQ`) | | DBMS | 强制指定特定后端,或保留为 `(auto)` | | Tamper | 逗号分隔的 tamper 脚本 (例如 `space2comment,randomcase`) | | Poll (s) | 轮询状态更新的频率 | #### 额外的 sqlmap 参数 一个自由格式的文本字段,用于传递 UI 中未公开的额外 sqlmap 参数标志。这些标志会被解析并映射到正确的 sqlmapapi JSON 键,因此它们实际上会被应用于扫描。 支持的标志包括: | 标志 | 描述 | | --- | --- | | `--delay=N` | 每个 HTTP 请求之间等待的秒数 | | `--timeout=N` | 请求超时前的秒数 | | `--retries=N` | 连接超时时的重试次数 | | `--time-sec=N` | 基于时间的盲注延迟的秒数 | | `--proxy=URL` | 通过代理路由请求 | | `--proxy-cred=user:pass` | 代理身份验证凭据 | | `--user-agent=UA` | 自定义 User-Agent 标头 | | `--referer=URL` | 自定义 Referer 标头 | | `--cookie=COOKIE` | 自定义 cookie 字符串 | | `--headers=HEADERS` | 额外的 HTTP 标头 | | `--auth-type=TYPE` | HTTP 身份验证类型 (Basic, Digest, NTLM) | | `--auth-cred=user:pass` | HTTP 身份验证凭据 | | `--tor` | 通过 Tor 路由 | | `--tor-type=TYPE` | Tor 代理类型 | | `--tor-port=N` | Tor 代理端口 | | `--ignore-proxy` | 忽略系统代理设置 | | `--ignore-redirects` | 忽略重定向 | | `--ignore-timeouts` | 忽略连接超时 | | `--force-ssl` | 强制使用 HTTPS | | `--flush-session` | 清除会话数据并重新测试 | | `--fresh-queries` | 忽略缓存的查询结果 | | `--mobile` | 模拟移动端 User-Agent | | `--prefix=STR` | 注入 payload 前缀 | | `--suffix=STR` | 注入 payload 后缀 | | `--safe-url=URL` | 测试期间定期访问的 URL | | `--text-only` | 仅基于文本内容比较页面 | **示例:** `--delay=2 --timeout=30 --proxy=http://127.0.0.1:8080` 未知标志将被静默忽略。 #### 标志 | 标志 | 描述 | | --- | --- | | Batch | 非交互模式 (sqlmap 对任何提示使用其自带的默认值) | | Random Agent | 随机化 User-Agent 标头 | | Forms | 发现并测试目标页面上的表单 | | Enum DBs | 在确认注入后枚举数据库 | | Current User | 获取当前数据库用户 | | Banner | 获取 DBMS banner | | Is DBA | 检查当前用户是否具有 DBA 权限 | #### 提示响应 仅在取消选中 **Batch** 时可见。允许您预先配置 sqlmap 对已知交互式提示的响应。每个提示都可以设置为 **Yes**、**No** 或 **Default** (sqlmap 自身对该提示的内置默认值)。 | 提示 | 描述 | | --- | --- | | Crack found hashes | 尝试破解发现的任何密码哈希 | | Dictionary-based hash attack | 使用字典进行哈希破解 | | Store hashes to CSV file | 将发现的哈希保存到文件中 | | Use common password suffixes | 在哈希破解期间附加常见后缀 | | Quit after finding first injection | 一旦找到一个可注入参数即停止测试 | | Merge scan results | 合并多次运行的结果 | | Flush session and re-test | 清除缓存的会话数据并重新开始测试 | | Retrieve full schema | 枚举完整的数据库 schema | | Adjust level/risk for WAF detection | 如果检测到 WAF,自动提高 level/risk | | Skip testing other parameters | 在确认第一个易受攻击的参数后停止 | 设置会在提交时生成快照,因此每次扫描行都会记住其运行时的确切选项。提交后更改面板不会影响正在运行的扫描。 ### 📊 Scans 选项卡 Scans 选项卡包含扫描表格和日志输出。每个提交的请求显示为一行。列可排序。单击任意行可在下方的详细信息面板中查看其实时日志和选项快照。 | 状态 | 含义 | | --- | --- | | Queued | 已提交,尚未开始 | | Running | 正在扫描 | | Finished | 已完成,未发现注入 | | Vulnerable | 已确认存在注入 | | Stopped | 已手动停止 | | Error | 扫描失败 | ### 🖱️ 右键菜单 | 操作 | 描述 | | --- | --- | | Stop Task | 向 sqlmapapi 发送停止信号并将扫描标记为 Stopped | | Delete Task | 停止扫描,从 API 中删除它,并移除所有持久化的数据 | ### 🧰 工具栏 | 按钮 | 描述 | | --- | --- | | Stop All | 停止所有当前正在运行的扫描 | | Remove Finished | 移除所有 Finished、Stopped 和 Error 行并清除其数据 | ## 💾 持久化 所有扫描数据通过 Montoya API 的 `persistence().extensionData()` 存储在 Burp 项目文件中。这原生具有项目范围作用域,因此打开不同的 Burp 项目只会显示该项目的扫描,项目之间不会发生交叉污染。 - **无需外部数据库** - 可以自由重启 sqlmapapi 而不会丢失任何扫描历史记录。 - **增量保存** - 扫描记录在启动时写入,并在每一行日志输出时更新,因此即使在扫描中途关闭 Burp,数据也会被保留。 - **自动恢复** - 当扩展初始化时,当前项目的所有扫描将重新加载回表格中。 通过右键菜单或 Remove Finished 删除扫描会将其从 API 和项目中永久清除。 ## 📝 备注 - 该扩展会对请求进行去重,因此在单次操作中多次发送相同的请求只会创建一次扫描。 - HTTPS 目标会根据 HTTP 服务自动检测;并会相应地设置 `forceSSL`。 - 对于在上次关闭扩展时仍在运行的扫描,扩展会在加载时尝试重新连接到活跃的 API。如果在此期间 API 已被重启,这些扫描将显示其最后已知的状态。 - sqlmap 的 DEBUG 级别日志条目已从日志视图中过滤掉,以保持输出的可读性。 ## 🔨 从源码构建 ### 要求 - [Java JDK](https://www.oracle.com/java/technologies/downloads/) (JDK 17 或更高版本) - 已安装并配置好 [sqlmap](https://github.com/sqlmapproject/sqlmap) - Gradle (在 Windows 上可通过 [Scoop](https://scoop.sh) 安装) ### 构建 ``` Set-ExecutionPolicy RemoteSigned -Scope CurrentUser irm get.scoop.sh | iex scoop install gradle ``` 然后在项目文件夹中执行: ``` gradle wrapper .\gradlew.bat jar ``` 输出的 jar 包位于 `build\libs\SQLBurp.jar`。
标签:Burp Suite, CISA项目, DOE合作, REST API, SQLi检测, SQLMap, Web安全, 后台面板检测, 域名枚举, 安全测试, 并发扫描, 插件, 攻击性安全, 数据展示, 日志流, 红队, 网络安全, 蓝队分析, 隐私保护, 项目持久化