Skip to content

Commit 8f5ff53

Browse files
committed
feat: add file synchronization scripts for dual API architecture
Add sync-shared.bat and sync-shared.sh scripts to synchronize shared files between legacy-api and montoya-api modules. Changes: - Create Windows batch sync script (sync-shared.bat) - Create Unix shell sync script (sync-shared.sh) - Add comprehensive documentation (SHARED_FILES.md) - Update README.md with dual API architecture details The scripts synchronize shared code files (models, utils, UI components) from legacy-api to montoya-api, while keeping API-specific files separate. Both modules compile successfully without warnings or errors.
1 parent c4e831f commit 8f5ff53

5 files changed

Lines changed: 511 additions & 256 deletions

File tree

src/burpEx/README.md

Lines changed: 128 additions & 162 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,65 @@ Burp Suite 扩展插件,用于将 HTTP 请求发送到 SQLMap WebUI 后端进
66

77
```
88
burpEx/
9-
├── legacy-api/ # 传统 Burp API 插件 (Java 11)
9+
├── legacy-api/ # 传统 Burp API 插件 (Java 11)
1010
│ ├── src/main/java/com/sqlmapwebui/burp/
11-
│ │ ├── SqlmapWebUIExtension.java # 插件入口
12-
│ │ ├── ui/ # UI 组件
13-
│ │ ├── config/ # 配置管理
14-
│ │ └── http/ # HTTP 客户端
15-
│ ├── pom.xml
16-
│ └── target/ # 构建输出
17-
└── montoya-api/ # Montoya API 插件 (Java 17, Burp 2023.1+)
18-
├── src/main/java/com/sqlmapwebui/burp/
19-
│ ├── SqlmapWebUIExtension.java # 插件入口
20-
│ ├── ui/ # UI 组件
21-
│ ├── config/ # 配置管理
22-
│ └── http/ # HTTP 客户端
23-
├── pom.xml
24-
└── target/ # 构建输出
11+
│ │ ├── BurpExtender.java # 插件入口 (Legacy API)
12+
│ │ ├── SqlmapUITab.java # 主UI标签页
13+
│ │ ├── panels/ # UI面板组件
14+
│ │ ├── dialogs/ # 对话框组件
15+
│ │ └── [共享代码文件...]
16+
│ └── pom.xml
17+
18+
├── montoya-api/ # Montoya API 插件 (Java 17+, Burp 2023.1+)
19+
│ ├── src/main/java/com/sqlmapwebui/burp/
20+
│ │ ├── SqlmapWebUIExtension.java # 插件入口 (Montoya API)
21+
│ │ ├── SqlmapContextMenuProvider.java # 右键菜单提供者
22+
│ │ ├── HttpRequestUtils.java # UTF-8请求处理
23+
│ │ ├── util/ # 工具类
24+
│ │ ├── SqlmapUITab.java # 主UI标签页 (与Legacy共享)
25+
│ │ ├── panels/ # UI面板组件 (与Legacy共享)
26+
│ │ ├── dialogs/ # 对话框组件 (与Legacy共享)
27+
│ │ └── [共享代码文件...]
28+
│ └── pom.xml
29+
30+
├── sync-shared.bat # Windows 同步脚本
31+
├── sync-shared.sh # Linux/Mac 同步脚本
32+
└── SHARED_FILES.md # 共享文件文档
33+
```
34+
35+
## 双 API 架构
36+
37+
本项目同时支持 Burp Suite 的两种 API:
38+
39+
| 模块 | API 类型 | Java 版本 | 兼容 Burp Suite |
40+
|------|----------|-----------|----------------|
41+
| `legacy-api` | Legacy API | Java 11+ | 所有版本 |
42+
| `montoya-api` | Montoya API | Java 17+ | 2023.1+ |
43+
44+
**共享代码策略:**
45+
- 两个模块共享 90% 的代码(模型、工具类、UI组件)
46+
- 使用同步脚本 `sync-shared.bat/sh` 保持代码一致
47+
- 仅入口点和 API 特定代码独立维护
48+
49+
## 同步脚本使用
50+
51+
当修改 `legacy-api` 中的共享代码后,需要同步到 `montoya-api`
52+
53+
### Windows
54+
```batch
55+
cd src/burpEx
56+
sync-shared.bat
57+
```
58+
59+
### Linux/Mac
60+
```bash
61+
cd src/burpEx
62+
chmod +x sync-shared.sh
63+
./sync-shared.sh
2564
```
2665

66+
详细说明请查看 [SHARED_FILES.md](./SHARED_FILES.md)
67+
2768
## 插件功能
2869

2970
### 核心功能
@@ -32,197 +73,122 @@ burpEx/
3273
|------|------|
3374
| **提交扫描任务** | 右键菜单发送 HTTP 请求到后端 |
3475
| **默认配置管理** | 设置和保存默认扫描参数 |
35-
| **常用配置管理** | 添加/编辑/删除常用扫描配置 |
76+
| **常用配置管理** | 添加/编辑/删除常用扫描配置 (SQLite存储) |
3677
| **历史配置记录** | 查看历史扫描使用的配置 |
37-
| **引导式编辑器** | 可视化配置 SQLMap 参数 |
78+
| **引导式编辑器** | 可视化配置 SQLMap 215个参数 |
3879
| **配置选择** | 提交时可选择默认配置、常用配置或历史记录配置 |
3980
| **活动日志** | 记录所有操作和发送结果 |
81+
| **请求过滤** | 自动过滤二进制内容请求 |
82+
| **请求去重** | 自动去重相同 URL 的请求 |
83+
| **注入点标记** | 手动标记注入点位置 |
84+
| **会话Header** | 提交临时会话Header |
85+
| **Header规则** | 提交持久化Header规则 |
4086

4187
> **注意**: 插件端仅负责发送请求,任务管理和结果查看请使用 Web 前端。
4288
4389
### 右键菜单
4490

45-
- **Send to SQLMap WebUI** - 使用默认配置直接发送
46-
- **Send to SQLMap WebUI (选择配置)...** - 弹出配置选择对话框
91+
- **Send to SQLMap WebUI** - 使用选中的配置直接发送
92+
- **标记注入点并扫描 (*)** - 标记注入点后发送
93+
- **Send to SQLMap WebUI (配置扫描)...** - 弹出高级配置对话框
94+
- **提交会话Header** - 提交临时会话Header (单选时显示)
95+
- **提交Header规则** - 提交持久化Header规则 (单选时显示)
4796

4897
### UI 标签页
4998

5099
| 标签页 | 功能 |
51100
|--------|------|
52-
| 服务器配置 | 设置后端 URL、测试连接状态 |
53-
| 默认配置 | 设置 Level、Risk、DBMS、Technique、Batch 等默认参数 |
54-
| 常用配置 | 管理常用配置列表(添加/编辑/删除),支持引导式编辑 |
55-
| 历史配置 | 查看历史扫描使用的配置记录 |
56-
| 活动日志 | 查看操作日志和发送历史 |
101+
| **后端配置** | 设置后端 URL 和连接状态 |
102+
| **默认配置** | 设置默认扫描参数 |
103+
| **常用配置** | 管理常用配置 (CRUD操作) |
104+
| **历史记录** | 查看历史使用过的配置 |
105+
| **活动日志** | 查看操作记录和发送结果 |
57106

58-
## 版本选择
107+
## 构建说明
59108

60-
| Burp Suite 版本 | 推荐插件 | Java 要求 |
61-
|-----------------|----------|-----------|
62-
| 2023.1+ | montoya-api | Java 17+ |
63-
| 较老版本 | legacy-api | Java 11+ |
109+
### 环境要求
64110

65-
## 构建方式
111+
- **Legacy API**: JDK 11+
112+
- **Montoya API**: JDK 17+
113+
- Maven 3.6+
66114

67-
### Montoya API (推荐)
115+
### 编译命令
68116

69117
```bash
70-
cd montoya-api
118+
# 编译 Legacy API (兼容 Java 11)
119+
cd src/burpEx/legacy-api
71120
mvn clean package -DskipTests
72-
```
73-
74-
生成文件: `target/sqlmap-webui-burp-montoya-*.jar`
75121

76-
### Legacy API
77-
78-
```bash
79-
cd legacy-api
122+
# 编译 Montoya API (需要 Java 17+)
123+
cd src/burpEx/montoya-api
80124
mvn clean package -DskipTests
81125
```
82126

83-
生成文件: `target/sqlmap-webui-burp-legacy-*-jar-with-dependencies.jar`
84-
85-
## 安装方式
86-
87-
1. 打开 Burp Suite
88-
2. 进入 **Extender****Extensions** 标签页
89-
3. 点击 **Add** 按钮
90-
4. 选择对应版本的 JAR 文件
91-
5. 点击 **Next** 完成安装
92-
93-
## 使用方法
127+
### 输出文件
94128

95-
### 1. 配置服务器
129+
- Legacy: `target/sqlmap-webui-burp-legacy-1.8.16-jar-with-dependencies.jar`
130+
- Montoya: `target/sqlmap-webui-burp-montoya-1.8.16.jar`
96131

97-
1. 进入插件的「服务器配置」标签页
98-
2. 设置后端 URL: `http://localhost:8775`
99-
3. 点击「测试连接」验证连接状态
132+
## 安装使用
100133

101-
### 2. 配置默认参数
134+
1. 编译生成 JAR 文件
135+
2. 打开 Burp Suite -> Extensions -> Add
136+
3. 选择编译好的 JAR 文件
137+
4. 确保 SQLMap WebUI 后端已启动(默认 http://localhost:8775)
102138

103-
在「默认配置」标签页设置:
104-
- Level: 检测级别 (1-5)
105-
- Risk: 风险级别 (1-3)
106-
- DBMS: 数据库类型
107-
- Technique: 注入技术
108-
- Batch: 批处理模式
139+
## 配置说明
109140

110-
### 3. 发送请求
141+
### 后端 URL
111142

112-
1. 在 Proxy/Repeater/Target 等位置选中请求
113-
2. 右键选择 "Send to SQLMap WebUI"
114-
3. 或选择 "Send to SQLMap WebUI (选择配置)..." 自定义参数
143+
默认后端地址: `http://localhost:8775`
115144

116-
### 4. 查看结果
145+
在 "后端配置" 标签页中修改后端 URL,插件会自动测试连接。
117146

118-
发送后在 Web 前端查看扫描任务和结果。
147+
### 扫描配置
119148

120-
## 扫描参数说明
149+
支持 215 个 SQLMap 参数,包括但不限于:
150+
- **目标选项**: URL、日志文件、批量文件等
151+
- **请求选项**: 方法、数据、Cookie、代理、认证等
152+
- **优化选项**: 线程、预测输出等
153+
- **注入选项**: 测试参数、DBMS、Tamper脚本等
154+
- **检测选项**: Level、Risk、字符串匹配等
155+
- **技术选项**: 注入技术、时间盲注等
156+
- **枚举选项**: Banner、表、列、数据导出等
157+
- **操作系统接管**: 命令执行、Shell等 (高危)
158+
- **文件系统**: 文件读写 (高危)
121159

122-
### 检测级别 (Level)
160+
## 开发说明
123161

124-
|| 说明 |
125-
|----|------|
126-
| 1 | 默认,测试 GET/POST 参数 |
127-
| 2 | 同时测试 Cookie |
128-
| 3 | 同时测试 User-Agent/Referer |
129-
| 4 | 更多测试向量 |
130-
| 5 | 最全面的测试 |
131-
132-
### 风险级别 (Risk)
133-
134-
|| 说明 |
135-
|----|------|
136-
| 1 | 默认,安全测试 |
137-
| 2 | 添加基于时间的盲注 |
138-
| 3 | 添加基于 OR 的盲注(可能影响数据)|
139-
140-
### 注入技术代码 (Technique)
141-
142-
| 代码 | 技术 |
143-
|------|------|
144-
| B | 布尔盲注 (Boolean-based blind) |
145-
| E | 报错注入 (Error-based) |
146-
| U | 联合查询注入 (Union query-based) |
147-
| S | 堆叠查询 (Stacked queries) |
148-
| T | 时间盲注 (Time-based blind) |
149-
| Q | 内联查询 (Inline queries) |
150-
151-
默认: `BEUSTQ` (全部技术)
152-
153-
### 数据库类型 (DBMS)
154-
155-
支持: MySQL, PostgreSQL, Oracle, SQLite, Microsoft SQL Server, IBM DB2 等
156-
157-
留空则自动检测。
158-
159-
## 后端接口
160-
161-
插件需要后端提供以下接口:
162-
163-
| 接口 | 方法 | 说明 |
164-
|------|------|------|
165-
| `/api/version` | GET | 获取版本信息(用于测试连接) |
166-
| `/api/health` | GET | 健康检查 |
167-
| `/burp/admin/scan` | POST | 提交扫描任务 |
168-
169-
## 依赖项
170-
171-
| 依赖 | 版本 | 用途 |
172-
|------|------|------|
173-
| OkHttp | 4.12.0 | HTTP 客户端 |
174-
| Gson | 2.10.1 | JSON 处理 |
175-
| SLF4J | 2.0.9 | 日志门面 |
176-
| Logback | 1.4.11 | 日志实现 |
177-
178-
## 开发指南
179-
180-
### 项目结构说明
181-
182-
```
183-
src/main/java/com/sqlmapwebui/burp/
184-
├── SqlmapWebUIExtension.java # 插件入口,注册菜单和UI
185-
├── ui/
186-
│ ├── MainPanel.java # 主面板(Tab容器)
187-
│ ├── ServerConfigPanel.java # 服务器配置面板
188-
│ ├── DefaultConfigPanel.java # 默认配置面板
189-
│ ├── PresetConfigPanel.java # 常用配置面板
190-
│ ├── HistoryConfigPanel.java # 历史配置面板
191-
│ ├── GuidedParamEditorDialog.java # 引导式参数编辑器
192-
│ └── ActivityLogPanel.java # 活动日志面板
193-
├── config/
194-
│ ├── ConfigManager.java # 配置管理器
195-
│ └── ScanConfig.java # 扫描配置模型
196-
└── http/
197-
└── ApiClient.java # API 客户端
198-
```
162+
### 修改共享代码
199163

200-
### 添加新配置项
164+
1.`legacy-api` 中修改文件(保持 Java 11 兼容性)
165+
2. 运行 `sync-shared.bat``sync-shared.sh`
166+
3. 分别编译两个模块验证
201167

202-
1.`ScanConfig` 中添加字段
203-
2.`DefaultConfigPanel` 中添加 UI 控件
204-
3.`ConfigManager` 中添加持久化逻辑
168+
### 添加新功能
205169

206-
### 调试方法
170+
- 如果是通用功能:在 `legacy-api` 中实现,然后同步
171+
- 如果是 API 特定:只在对应模块中实现
207172

208-
1. 在 Burp Suite 中加载插件
209-
2. 查看 Extender → Output 标签页的日志
210-
3. 使用活动日志面板查看操作记录
173+
## 注意事项
211174

212-
## 常见问题
175+
1. **同步方向**: 始终以 `legacy-api` 为源,`montoya-api` 为目标
176+
2. **兼容性**: 确保共享代码兼容 Java 11
177+
3. **编译验证**: 每次同步后都应该编译验证
178+
4. **备份**: 同步脚本会自动创建备份
213179

214-
### Q: 插件加载失败?
215-
A: 检查 Java 版本是否满足要求(Montoya 需要 Java 17+,Legacy 需要 Java 11+)
180+
## 版本信息
216181

217-
### Q: 连接测试失败?
218-
A: 检查后端服务是否运行,URL 是否正确(默认 http://localhost:8775)
182+
- **版本**: 1.8.16
183+
- **更新日期**: 2026-02-10
184+
- **兼容 SQLMap**: 1.9.11.3+
219185

220-
### Q: 发送请求后看不到任务?
221-
A: 在 Web 前端查看任务列表,插件只负责发送,不显示任务
186+
## 相关链接
222187

223-
### Q: 如何查看详细错误?
224-
A: 查看 Burp Suite 的 Extender → Output 标签页
188+
- [共享文件说明](./SHARED_FILES.md)
189+
- [SQLMap 官方文档](https://sqlmap.org/)
190+
- [Burp Suite 扩展开发](https://portswigger.net/burp/documentation/desktop/extensions)
225191

226-
## 许可证
192+
## License
227193

228194
MIT License

0 commit comments

Comments
 (0)