Skip to content

Commit 5356a96

Browse files
author
githubnull
committed
docs(burpEx): 添加Burp Suite集成指南文档
- 新增详细的Burp Suite插件说明,包括功能介绍和使用方法 - 描述了插件项目结构及核心功能实现细节 - 补充版本兼容性、安装构建步骤和配置使用指导 - 提供API接口说明和架构设计图示 - 添加故障排除常见问题与解决方案 - 说明开发指南与代码结构,便于二次开发和维护 docs(frontEnd): 添加前端功能增强文档 - 详细介绍前端项目的架构、核心组件和技术栈 - 描述任务管理、认证控制和智能轮询等关键功能 - 使用图表展示组件交互和请求流程 - 说明项目依赖关系及性能优化策略 - 提供故障排除指南帮助定位常见问题 - 总结系统优势与未来改进方向 docs(backEnd): 添加后端服务文档 - 详细说明后端模块结构和核心组件职责 - 描述API控制器、业务服务及数据模型设计 - 提供认证、配置和请求头管理的接口及流程图 - 展示服务架构及模块间依赖关系 - 说明关键工具类功能及数据库操作细节 - 包含故障排除与性能优化建议
1 parent f6ed717 commit 5356a96

5 files changed

Lines changed: 1402 additions & 1 deletion

File tree

Lines changed: 335 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,335 @@
1+
# Burp Suite 集成指南
2+
3+
<cite>
4+
**本文档引用的文件**
5+
- [SqlmapWebUIExtension.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/SqlmapWebUIExtension.java)
6+
- [SqlmapApiClient.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/SqlmapApiClient.java)
7+
- [SqlmapUITab.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/SqlmapUITab.java)
8+
- [ConfigManager.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ConfigManager.java)
9+
- [ServerConfigPanel.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/panels/ServerConfigPanel.java)
10+
- [AdvancedScanConfigDialog.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/dialogs/AdvancedScanConfigDialog.java)
11+
- [admin.py](file://src/backEnd/api/burpSuiteExApi/admin.py)
12+
- [taskService.py](file://src/backEnd/service/taskService.py)
13+
- [headerController.py](file://src/backEnd/api/commonApi/headerController.py)
14+
- [README.md](file://src/burpEx/README.md)
15+
- [README.md](file://README.md)
16+
</cite>
17+
18+
## 目录
19+
1. [简介](#简介)
20+
2. [项目结构](#项目结构)
21+
3. [核心功能](#核心功能)
22+
4. [版本选择与兼容性](#版本选择与兼容性)
23+
5. [安装与构建](#安装与构建)
24+
6. [配置与使用](#配置与使用)
25+
7. [API 接口说明](#api-接口说明)
26+
8. [架构设计](#架构设计)
27+
9. [故障排除](#故障排除)
28+
10. [开发指南](#开发指南)
29+
30+
## 简介
31+
32+
Burp Suite 扩展插件是 SQLMap WebUI 项目的重要组成部分,旨在为安全研究人员提供一个无缝的集成体验。通过该插件,用户可以直接从 Burp Suite 的任意 HTTP 请求上下文(如 Proxy、Repeater、Target 等)将请求发送到 SQLMap WebUI 后端进行 SQL 注入检测。
33+
34+
该插件提供了丰富的功能,包括配置管理、任务提交、活动日志记录等,极大地简化了从漏洞发现到自动化测试的流程。插件分为两个版本:`legacy-api``montoya-api`,以适应不同版本的 Burp Suite。
35+
36+
**Section sources**
37+
- [README.md](file://src/burpEx/README.md#L1-L224)
38+
- [README.md](file://README.md#L1-L281)
39+
40+
## 项目结构
41+
42+
Burp Suite 扩展的项目结构清晰,主要分为两个独立的模块,分别对应不同的 Burp Suite API 版本。
43+
44+
```mermaid
45+
graph TD
46+
burpEx["burpEx/"] --> legacy_api["legacy-api/"]
47+
burpEx --> montoya_api["montoya-api/"]
48+
legacy_api --> src_legacy["src/main/java/com/sqlmapwebui/burp/"]
49+
legacy_api --> pom_legacy["pom.xml"]
50+
legacy_api --> target_legacy["target/"]
51+
montoya_api --> src_montoya["src/main/java/com/sqlmapwebui/burp/"]
52+
montoya_api --> pom_montoya["pom.xml"]
53+
montoya_api --> target_montoya["target/"]
54+
src_legacy --> extension_legacy["SqlmapWebUIExtension.java"]
55+
src_legacy --> ui_legacy["ui/"]
56+
src_legacy --> config_legacy["config/"]
57+
src_legacy --> http_legacy["http/"]
58+
src_montoya --> extension_montoya["SqlmapWebUIExtension.java"]
59+
src_montoya --> ui_montoya["ui/"]
60+
src_montoya --> config_montoya["config/"]
61+
src_montoya --> http_montoya["http/"]
62+
```
63+
64+
**Diagram sources**
65+
- [README.md](file://src/burpEx/README.md#L7-L25)
66+
67+
**Section sources**
68+
- [README.md](file://src/burpEx/README.md#L7-L25)
69+
70+
## 核心功能
71+
72+
Burp Suite 插件提供了以下核心功能:
73+
74+
| 功能 | 说明 |
75+
| :--- | :--- |
76+
| **提交扫描任务** | 通过右键菜单将 HTTP 请求发送到后端进行扫描 |
77+
| **默认配置管理** | 设置和保存默认的扫描参数(Level, Risk, DBMS 等) |
78+
| **常用配置管理** | 创建、编辑和删除常用的扫描配置,便于快速选择 |
79+
| **配置选择** | 提交任务时,可选择使用默认配置、常用配置或历史记录中的配置 |
80+
| **活动日志** | 记录所有操作和发送结果,便于追踪和审计 |
81+
82+
> **注意**: 插件端仅负责发送请求,任务管理和结果查看请使用 Web 前端。
83+
84+
### 右键菜单
85+
86+
插件在 Burp Suite 的 HTTP 请求上下文菜单中添加了以下选项:
87+
88+
- **发送到 SQLMap WebUI (Send to SQLMap WebUI)** - 使用默认配置直接发送扫描任务。
89+
- **发送到 SQLMap WebUI (选择配置)... (Send to SQLMap WebUI (选择配置)...)** - 弹出配置选择对话框,允许用户选择或自定义扫描参数。
90+
91+
### UI 标签页
92+
93+
插件在 Burp Suite 的 Extender 标签页中添加了一个名为 "SQLMap WebUI" 的标签页,包含以下子标签页:
94+
95+
| 标签页 | 功能 |
96+
| :--- | :--- |
97+
| 服务器配置 | 设置后端服务器的 URL 并测试连接状态 |
98+
| 默认配置 | 配置 Level、Risk、DBMS、Technique、Batch 等默认扫描参数 |
99+
| 常用配置 | 管理常用配置列表,支持添加、编辑和删除 |
100+
| 历史配置 | 查看和管理最近使用过的配置 |
101+
| 活动日志 | 查看操作日志和发送历史 |
102+
103+
**Section sources**
104+
- [README.md](file://src/burpEx/README.md#L27-L54)
105+
106+
## 版本选择与兼容性
107+
108+
为了适应不同版本的 Burp Suite,插件提供了两个独立的版本。
109+
110+
| Burp Suite 版本 | 推荐插件 | Java 要求 |
111+
| :--- | :--- | :--- |
112+
| 2023.1+ | montoya-api | Java 17+ |
113+
| 较老版本 | legacy-api | Java 11+ |
114+
115+
`montoya-api` 版本利用了 Burp Suite 2023.1 引入的现代化 API,提供了更好的性能和更简洁的代码结构。对于使用最新版 Burp Suite 的用户,强烈推荐使用此版本。
116+
117+
**Section sources**
118+
- [README.md](file://src/burpEx/README.md#L57-L61)
119+
120+
## 安装与构建
121+
122+
### 构建方式
123+
124+
#### Montoya API (推荐)
125+
126+
```bash
127+
cd montoya-api
128+
mvn clean package -DskipTests
129+
```
130+
131+
生成文件: `target/sqlmap-webui-burp-montoya-*.jar`
132+
133+
#### Legacy API
134+
135+
```bash
136+
cd legacy-api
137+
mvn clean package -DskipTests
138+
```
139+
140+
生成文件: `target/sqlmap-webui-burp-legacy-*-jar-with-dependencies.jar`
141+
142+
### 安装方式
143+
144+
1. 打开 Burp Suite。
145+
2. 进入 **Extender****Extensions** 标签页。
146+
3. 点击 **Add** 按钮。
147+
4. 选择对应版本的 JAR 文件。
148+
5. 点击 **Next** 完成安装。
149+
150+
**Section sources**
151+
- [README.md](file://src/burpEx/README.md#L62-L88)
152+
153+
## 配置与使用
154+
155+
### 1. 配置服务器
156+
157+
1. 进入插件的「服务器配置」标签页。
158+
2. 设置后端 URL,例如 `http://localhost:8775`
159+
3. 点击「测试连接」按钮,验证与后端服务的连接状态。连接成功后,状态指示灯会变为绿色。
160+
161+
### 2. 配置默认参数
162+
163+
在「默认配置」标签页中,可以设置以下参数:
164+
165+
- **Level**: 检测级别 (1-5),级别越高,测试的向量越多。
166+
- **Risk**: 风险级别 (1-3),风险越高,可能对目标系统造成的影响越大。
167+
- **DBMS**: 指定目标数据库类型,留空则由 SQLMap 自动检测。
168+
- **Technique**: 选择使用的注入技术,如布尔盲注(B)、报错注入(E)、联合查询(U)等。
169+
- **Batch**: 启用批处理模式,减少用户交互。
170+
171+
### 3. 发送请求
172+
173+
1. 在 Burp Suite 的 Proxy、Repeater 或 Target 等位置选中一个或多个 HTTP 请求。
174+
2. 右键单击,选择 "Send to SQLMap WebUI" 使用默认配置发送。
175+
3. 或选择 "Send to SQLMap WebUI (选择配置)..." 以弹出高级配置对话框,进行更精细的控制。
176+
177+
### 4. 查看结果
178+
179+
发送请求后,需要在 SQLMap WebUI 的 Web 前端界面查看扫描任务的进度和结果。插件本身不显示任务详情,仅负责任务的提交。
180+
181+
**Section sources**
182+
- [README.md](file://src/burpEx/README.md#L92-L115)
183+
184+
## API 接口说明
185+
186+
Burp Suite 插件通过 HTTP API 与后端进行通信。插件需要后端提供以下接口:
187+
188+
| 接口 | 方法 | 说明 |
189+
| :--- | :--- | :--- |
190+
| `/api/health` | GET | 健康检查,用于测试连接。插件通过此接口获取后端版本信息。 |
191+
| `/api/burpsuite/admin/task/add` | POST | 提交扫描任务的核心接口。插件将请求信息和扫描参数封装后发送至此接口。 |
192+
| `/api/config/temp-dir` | GET/POST | 获取和设置用于保存 HTTP 原始报文的临时文件目录。 |
193+
| `/api/commonApi/header/session-headers` | POST | 提交会话性请求头规则。 |
194+
| `/api/commonApi/header/persistent-header-rules` | POST | 提交持久化请求头规则。 |
195+
196+
**Section sources**
197+
- [README.md](file://src/burpEx/README.md#L156-L165)
198+
- [SqlmapApiClient.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/SqlmapApiClient.java#L36-L208)
199+
- [admin.py](file://src/backEnd/api/burpSuiteExApi/admin.py#L18-L37)
200+
201+
## 架构设计
202+
203+
Burp Suite 插件采用模块化设计,主要由以下几个核心组件构成:
204+
205+
```mermaid
206+
classDiagram
207+
class SqlmapWebUIExtension {
208+
+initialize(MontoyaApi api)
209+
-apiClient SqlmapApiClient
210+
-configManager ConfigManager
211+
-uiTab SqlmapUITab
212+
}
213+
class SqlmapApiClient {
214+
+sendTask(String jsonPayload)
215+
+getVersion()
216+
+getTempDirConfig()
217+
+setTempDirConfig(String tempDir)
218+
+sendSessionHeaders(String jsonPayload)
219+
+sendHeaderRule(String jsonPayload)
220+
}
221+
class SqlmapUITab {
222+
-serverConfigPanel ServerConfigPanel
223+
-defaultConfigPanel DefaultConfigPanel
224+
-presetConfigPanel PresetConfigPanel
225+
-historyConfigPanel HistoryConfigPanel
226+
-logPanel LogPanel
227+
}
228+
class ConfigManager {
229+
+getBackendUrl()
230+
+setBackendUrl(String url)
231+
+getDefaultConfig()
232+
+addPresetConfig(ScanConfig config)
233+
+addToHistory(ScanConfig config)
234+
}
235+
class ServerConfigPanel {
236+
+testConnection()
237+
+saveServerConfig()
238+
+loadTempDirConfig()
239+
+saveTempDirConfig()
240+
}
241+
class AdvancedScanConfigDialog {
242+
+show(HttpRequestResponse[] textMessages, HttpRequestResponse[] binaryMessages)
243+
-sendScan()
244+
}
245+
SqlmapWebUIExtension --> SqlmapApiClient : "使用"
246+
SqlmapWebUIExtension --> ConfigManager : "使用"
247+
SqlmapWebUIExtension --> SqlmapUITab : "创建并注册"
248+
SqlmapUITab --> ServerConfigPanel : "包含"
249+
SqlmapUITab --> DefaultConfigPanel : "包含"
250+
SqlmapUITab --> PresetConfigPanel : "包含"
251+
SqlmapUITab --> HistoryConfigPanel : "包含"
252+
SqlmapUITab --> LogPanel : "包含"
253+
AdvancedScanConfigDialog --> ConfigManager : "使用"
254+
AdvancedScanConfigDialog --> SqlmapApiClient : "使用"
255+
AdvancedScanConfigDialog --> SqlmapUITab : "使用"
256+
```
257+
258+
**Diagram sources**
259+
- [SqlmapWebUIExtension.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/SqlmapWebUIExtension.java#L19-L67)
260+
- [SqlmapApiClient.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/SqlmapApiClient.java#L15-L208)
261+
- [SqlmapUITab.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/SqlmapUITab.java#L22-L172)
262+
- [ConfigManager.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ConfigManager.java#L17-L404)
263+
- [ServerConfigPanel.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/panels/ServerConfigPanel.java#L21-L781)
264+
- [AdvancedScanConfigDialog.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/dialogs/AdvancedScanConfigDialog.java#L27-L800)
265+
266+
**Section sources**
267+
- [SqlmapWebUIExtension.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/SqlmapWebUIExtension.java#L19-L67)
268+
- [SqlmapApiClient.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/SqlmapApiClient.java#L15-L208)
269+
- [SqlmapUITab.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/SqlmapUITab.java#L22-L172)
270+
- [ConfigManager.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ConfigManager.java#L17-L404)
271+
- [ServerConfigPanel.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/panels/ServerConfigPanel.java#L21-L781)
272+
- [AdvancedScanConfigDialog.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/dialogs/AdvancedScanConfigDialog.java#L27-L800)
273+
274+
## 故障排除
275+
276+
### Q: 插件加载失败?
277+
278+
**A**: 请检查您的 Java 版本是否满足要求。`montoya-api` 版本需要 Java 17+,而 `legacy-api` 版本需要 Java 11+。
279+
280+
### Q: 连接测试失败?
281+
282+
**A**: 请检查:
283+
1. SQLMap WebUI 后端服务是否已成功启动。
284+
2. 在「服务器配置」标签页中输入的 URL 是否正确(默认为 `http://localhost:8775`)。
285+
3. 防火墙或网络设置是否阻止了连接。
286+
287+
### Q: 发送请求后,在 Web 前端看不到任务?
288+
289+
**A**: Burp Suite 插件只负责将任务提交到后端,它本身不显示任务列表。请确保后端服务正常运行,并在 SQLMap WebUI 的 Web 前端界面查看任务列表。
290+
291+
### Q: 如何查看详细错误信息?
292+
293+
**A**: 可以在 Burp Suite 的 **Extender****Output** 标签页中查看详细的日志输出,这有助于诊断连接或通信问题。
294+
295+
**Section sources**
296+
- [README.md](file://src/burpEx/README.md#L207-L219)
297+
298+
## 开发指南
299+
300+
### 项目结构说明
301+
302+
插件的核心代码结构如下:
303+
304+
```mermaid
305+
graph TD
306+
src["src/main/java/com/sqlmapwebui/burp/"]
307+
src --> extension["SqlmapWebUIExtension.java"]
308+
src --> ui["ui/"]
309+
src --> config["config/"]
310+
src --> http["http/"]
311+
ui --> MainPanel["MainPanel.java"]
312+
ui --> ServerConfigPanel["ServerConfigPanel.java"]
313+
ui --> DefaultConfigPanel["DefaultConfigPanel.java"]
314+
ui --> PresetConfigPanel["PresetConfigPanel.java"]
315+
ui --> HistoryConfigPanel["HistoryConfigPanel.java"]
316+
ui --> LogPanel["LogPanel.java"]
317+
config --> ConfigManager["ConfigManager.java"]
318+
config --> ScanConfig["ScanConfig.java"]
319+
http --> ApiClient["ApiClient.java"]
320+
```
321+
322+
- **SqlmapWebUIExtension.java**: 插件的入口点,负责初始化所有组件并注册到 Burp Suite。
323+
- **ui/**: 包含所有 UI 面板的实现。
324+
- **config/**: 负责扫描配置的管理和持久化。
325+
- **http/**: 封装了与后端 API 通信的 HTTP 客户端。
326+
327+
### 添加新配置项
328+
329+
若需为扫描任务添加新的配置参数,可遵循以下步骤:
330+
1.`ScanConfig` 类中添加新的字段。
331+
2.`DefaultConfigPanel` 的 UI 中添加相应的控件。
332+
3.`ConfigManager` 中实现该配置的持久化逻辑。
333+
334+
**Section sources**
335+
- [README.md](file://src/burpEx/README.md#L177-L200)

0 commit comments

Comments
 (0)