|
| 1 | +# 关于与帮助系统 |
| 2 | + |
| 3 | +<cite> |
| 4 | +**本文档引用的文件** |
| 5 | +- [README.md](file://README.md) |
| 6 | +- [USAGE_GUIDE.md](file://doc/USAGE_GUIDE.md) |
| 7 | +- [HEADER_CONFIG_USER_GUIDE.md](file://doc/HEADER_CONFIG_USER_GUIDE.md) |
| 8 | +- [headerController.py](file://src/backEnd/api/commonApi/headerController.py) |
| 9 | +- [headerRuleService.py](file://src/backEnd/service/headerRuleService.py) |
| 10 | +- [PersistentHeaderRule.py](file://src/backEnd/model/PersistentHeaderRule.py) |
| 11 | +- [HeaderScope.py](file://src/backEnd/model/HeaderScope.py) |
| 12 | +- [scope_matcher.py](file://src/backEnd/utils/scope_matcher.py) |
| 13 | +- [header_processor.py](file://src/backEnd/utils/header_processor.py) |
| 14 | +- [header_parser.py](file://src/backEnd/utils/header_parser.py) |
| 15 | +</cite> |
| 16 | + |
| 17 | +## 目录 |
| 18 | +1. [简介](#简介) |
| 19 | +2. [项目结构](#项目结构) |
| 20 | +3. [核心功能](#核心功能) |
| 21 | +4. [请求头规则管理](#请求头规则管理) |
| 22 | +5. [作用域匹配机制](#作用域匹配机制) |
| 23 | +6. [请求头处理流程](#请求头处理流程) |
| 24 | +7. [API接口说明](#api接口说明) |
| 25 | +8. [使用指南](#使用指南) |
| 26 | +9. [故障排查](#故障排查) |
| 27 | + |
| 28 | +## 简介 |
| 29 | + |
| 30 | +SQLMap Web UI 是一个现代化的 SQL 注入测试平台,为安全研究人员提供便捷的测试环境。该系统集成了任务管理、扫描配置、请求头规则管理、Burp Suite 和 Chrome 扩展集成等核心功能,并内置 VulnShop 漏洞靶场用于学习和测试。 |
| 31 | + |
| 32 | +本系统基于 FastAPI 和 Vue 3 构建,采用前后端分离架构,支持多种请求格式解析(cURL、PowerShell、fetch、原始 HTTP),并提供可视化配置界面,降低使用门槛。 |
| 33 | + |
| 34 | +**Section sources** |
| 35 | +- [README.md](file://README.md#L1-L310) |
| 36 | + |
| 37 | +## 项目结构 |
| 38 | + |
| 39 | +项目采用模块化设计,主要分为后端、前端、扩展插件和漏洞靶场四个部分: |
| 40 | + |
| 41 | +```mermaid |
| 42 | +graph TD |
| 43 | +A[sqlmapWebUI] --> B[src] |
| 44 | +A --> C[doc] |
| 45 | +A --> D[.gitmodules] |
| 46 | +A --> E[AGENTS.md] |
| 47 | +A --> F[CLAUDE.md] |
| 48 | +A --> G[DISCLAIMER.md] |
| 49 | +A --> H[README.md] |
| 50 | +A --> I[README_EN.md] |
| 51 | +A --> J[pnpm-lock.yaml] |
| 52 | +B --> K[backEnd] |
| 53 | +B --> L[frontEnd] |
| 54 | +B --> M[burpEx] |
| 55 | +B --> N[vulnTestServer] |
| 56 | +K --> O[api] |
| 57 | +K --> P[model] |
| 58 | +K --> Q[service] |
| 59 | +K --> R[utils] |
| 60 | +K --> S[third_lib] |
| 61 | +K --> T[app.py] |
| 62 | +K --> U[main.py] |
| 63 | +L --> V[src] |
| 64 | +L --> W[package.json] |
| 65 | +L --> X[vite.config.ts] |
| 66 | +M --> Y[legacy-api] |
| 67 | +M --> Z[montoya-api] |
| 68 | +M --> AA[README.md] |
| 69 | +N --> AB[doc] |
| 70 | +N --> AC[static] |
| 71 | +N --> AD[server.py] |
| 72 | +``` |
| 73 | + |
| 74 | +**Diagram sources** |
| 75 | +- [README.md](file://README.md#L173-L207) |
| 76 | + |
| 77 | +## 核心功能 |
| 78 | + |
| 79 | +系统提供以下核心功能: |
| 80 | + |
| 81 | +| 功能 | 说明 | |
| 82 | +|------|------| |
| 83 | +| 任务管理 | 创建、监控、停止 SQL 注入扫描任务 | |
| 84 | +| 扫描配置管理 | 支持默认配置、常用配置、历史配置的 CRUD 操作 | |
| 85 | +| HTTP 请求解析 | 支持 cURL、PowerShell、fetch、原始 HTTP 等多种格式自动解析 | |
| 86 | +| 批量操作 | 支持批量停止、删除、导入任务 | |
| 87 | +| 请求头规则管理 | 支持持久化规则和会话级规则,支持作用域配置 | |
| 88 | +| 扩展集成 | 支持 Chrome 扩展和 Burp Suite 插件 | |
| 89 | +| VulnShop 靶场 | 内置包含 8 种 SQL 注入漏洞类型的测试环境 | |
| 90 | + |
| 91 | +**Section sources** |
| 92 | +- [README.md](file://README.md#L17-L84) |
| 93 | + |
| 94 | +## 请求头规则管理 |
| 95 | + |
| 96 | +系统提供两种类型的请求头规则管理:持久化规则和会话级规则。 |
| 97 | + |
| 98 | +### 持久化规则 |
| 99 | + |
| 100 | +持久化规则存储在数据库中,长期有效,支持以下配置: |
| 101 | + |
| 102 | +- **规则名称**:规则的唯一标识 |
| 103 | +- **Header 名称**:请求头字段名称 |
| 104 | +- **Header 值**:请求头字段值 |
| 105 | +- **替换策略**:完全替换、追加、前置、条件替换、UPSERT |
| 106 | +- **优先级**:0-100,数值越大优先级越高 |
| 107 | +- **作用域配置**:灵活的 URL 匹配规则 |
| 108 | + |
| 109 | +```mermaid |
| 110 | +classDiagram |
| 111 | +class PersistentHeaderRule { |
| 112 | ++int id |
| 113 | ++string name |
| 114 | ++string header_name |
| 115 | ++string header_value |
| 116 | ++ReplaceStrategy replace_strategy |
| 117 | ++int priority |
| 118 | ++bool is_active |
| 119 | ++HeaderScope scope |
| 120 | ++datetime created_at |
| 121 | ++datetime updated_at |
| 122 | +} |
| 123 | +class ReplaceStrategy { |
| 124 | ++REPLACE |
| 125 | ++APPEND |
| 126 | ++PREPEND |
| 127 | ++CONDITIONAL |
| 128 | ++UPSERT |
| 129 | +} |
| 130 | +class HeaderScope { |
| 131 | ++string protocol_pattern |
| 132 | ++string host_pattern |
| 133 | ++string ip_pattern |
| 134 | ++string port_pattern |
| 135 | ++string path_pattern |
| 136 | ++bool use_regex |
| 137 | +} |
| 138 | +PersistentHeaderRule --> ReplaceStrategy : "使用" |
| 139 | +PersistentHeaderRule --> HeaderScope : "包含" |
| 140 | +``` |
| 141 | + |
| 142 | +**Diagram sources** |
| 143 | +- [PersistentHeaderRule.py](file://src/backEnd/model/PersistentHeaderRule.py#L19-L32) |
| 144 | +- [HeaderScope.py](file://src/backEnd/model/HeaderScope.py#L14-L32) |
| 145 | + |
| 146 | +### 会话级规则 |
| 147 | + |
| 148 | +会话级规则存储在内存中,具有临时性,支持 TTL 自动过期,适用于临时测试场景。 |
| 149 | + |
| 150 | +**Section sources** |
| 151 | +- [README.md](file://README.md#L52-L63) |
| 152 | +- [HEADER_CONFIG_USER_GUIDE.md](file://doc/HEADER_CONFIG_USER_GUIDE.md#L98-L141) |
| 153 | + |
| 154 | +## 作用域匹配机制 |
| 155 | + |
| 156 | +作用域匹配器负责判断请求头规则是否应用于特定的目标 URL,支持关键字匹配和正则表达式匹配两种模式。 |
| 157 | + |
| 158 | +### 匹配逻辑 |
| 159 | + |
| 160 | +- **scope 为 None**:表示全局生效,返回 True |
| 161 | +- **scope.is_empty() 为 True**:表示全局生效,返回 True |
| 162 | +- **所有配置的维度必须同时匹配**(AND 逻辑) |
| 163 | + |
| 164 | +### 匹配维度 |
| 165 | + |
| 166 | +| 维度 | 说明 | 示例 | |
| 167 | +|------|------|------| |
| 168 | +| 协议匹配 | 匹配 http 或 https | `https` 或 `http,https` | |
| 169 | +| 主机名匹配 | 匹配域名(支持通配符) | `api.example.com` 或 `*.example.com` | |
| 170 | +| IP 匹配 | 匹配 IP 地址(支持通配符) | `192.168.1.100` 或 `192.168.*` | |
| 171 | +| 端口匹配 | 匹配端口号(支持多个) | `443` 或 `80,443,8080` | |
| 172 | +| 路径匹配 | 匹配 URL 路径(支持通配符) | `/api/*` 或 `/v1/users` | |
| 173 | + |
| 174 | +```mermaid |
| 175 | +sequenceDiagram |
| 176 | +participant Client as "客户端" |
| 177 | +participant Processor as "HeaderProcessor" |
| 178 | +participant Matcher as "ScopeMatcher" |
| 179 | +participant Rule as "HeaderScope" |
| 180 | +Client->>Processor : 提交请求头和目标URL |
| 181 | +Processor->>Matcher : match_scope(scope, target_url) |
| 182 | +Matcher->>Matcher : parse_target_url(url) |
| 183 | +Matcher->>Matcher : _match_dimension(value, pattern, use_regex) |
| 184 | +Matcher-->>Processor : 返回匹配结果 |
| 185 | +Processor-->>Client : 返回处理后的请求头 |
| 186 | +``` |
| 187 | + |
| 188 | +**Diagram sources** |
| 189 | +- [scope_matcher.py](file://src/backEnd/utils/scope_matcher.py#L19-L142) |
| 190 | +- [header_processor.py](file://src/backEnd/utils/header_processor.py#L89-L151) |
| 191 | + |
| 192 | +## 请求头处理流程 |
| 193 | + |
| 194 | +请求头处理流程包括解析、应用规则和格式化三个阶段。 |
| 195 | + |
| 196 | +### 处理流程 |
| 197 | + |
| 198 | +1. **解析阶段**:将原始请求头转换为字典格式 |
| 199 | +2. **应用规则**:按优先级顺序应用持久化规则和会话级规则 |
| 200 | +3. **格式化阶段**:将处理后的请求头转换回列表格式 |
| 201 | + |
| 202 | +### 替换策略 |
| 203 | + |
| 204 | +| 策略 | 说明 | |
| 205 | +|------|------| |
| 206 | +| REPLACE | 完全替换现有值 | |
| 207 | +| APPEND | 追加到现有值后面 | |
| 208 | +| PREPEND | 前置到现有值前面 | |
| 209 | +| CONDITIONAL | 条件性替换 | |
| 210 | +| UPSERT | 如果存在则替换,如果不存在则新增 | |
| 211 | + |
| 212 | +```mermaid |
| 213 | +flowchart TD |
| 214 | +A[原始请求头] --> B{解析格式} |
| 215 | +B --> C[cURL] |
| 216 | +B --> D[HTTP] |
| 217 | +B --> E[JSON] |
| 218 | +B --> F[键值对] |
| 219 | +C --> G[解析cURL格式] |
| 220 | +D --> H[解析HTTP格式] |
| 221 | +E --> I[解析JSON格式] |
| 222 | +F --> J[解析键值对格式] |
| 223 | +G --> K[应用持久化规则] |
| 224 | +H --> K |
| 225 | +I --> K |
| 226 | +J --> K |
| 227 | +K --> L[应用会话级规则] |
| 228 | +L --> M[格式化输出] |
| 229 | +M --> N[处理后的请求头] |
| 230 | +``` |
| 231 | + |
| 232 | +**Diagram sources** |
| 233 | +- [header_processor.py](file://src/backEnd/utils/header_processor.py#L12-L258) |
| 234 | +- [header_parser.py](file://src/backEnd/utils/header_parser.py#L11-L306) |
| 235 | + |
| 236 | +## API接口说明 |
| 237 | + |
| 238 | +系统提供 RESTful API 接口用于请求头规则管理。 |
| 239 | + |
| 240 | +### 持久化规则接口 |
| 241 | + |
| 242 | +| 方法 | 路径 | 说明 | |
| 243 | +|------|------|------| |
| 244 | +| POST | /commonApi/header/persistent-header-rules | 创建持久化规则 | |
| 245 | +| GET | /commonApi/header/persistent-header-rules | 获取规则列表 | |
| 246 | +| GET | /commonApi/header/persistent-header-rules/{rule_id} | 获取单个规则 | |
| 247 | +| PUT | /commonApi/header/persistent-header-rules/{rule_id} | 更新规则 | |
| 248 | +| DELETE | /commonApi/header/persistent-header-rules/{rule_id} | 删除规则 | |
| 249 | + |
| 250 | +### 会话级规则接口 |
| 251 | + |
| 252 | +| 方法 | 路径 | 说明 | |
| 253 | +|------|------|------| |
| 254 | +| POST | /commonApi/header/session-headers | 设置会话级规则 | |
| 255 | +| GET | /commonApi/header/session-headers | 获取会话级规则 | |
| 256 | +| DELETE | /commonApi/header/session-headers | 清除会话级规则 | |
| 257 | +| DELETE | /commonApi/header/session-headers/{header_name} | 删除单个会话级规则 | |
| 258 | + |
| 259 | +**Section sources** |
| 260 | +- [headerController.py](file://src/backEnd/api/commonApi/headerController.py#L68-L270) |
| 261 | + |
| 262 | +## 使用指南 |
| 263 | + |
| 264 | +### 创建持久化规则 |
| 265 | + |
| 266 | +1. 进入「配置」→「Header 规则管理」标签页 |
| 267 | +2. 点击「添加规则」 |
| 268 | +3. 填写规则信息: |
| 269 | + - 规则名称、Header 名称、Header 值 |
| 270 | + - 替换策略、优先级 |
| 271 | + - 可选:配置作用域限定生效范围 |
| 272 | +4. 保存规则 |
| 273 | + |
| 274 | +### 批量导入请求头 |
| 275 | + |
| 276 | +1. 准备请求头文本(每行一个请求头) |
| 277 | +2. 使用「文本导入」功能 |
| 278 | +3. 设置默认优先级和替换策略 |
| 279 | +4. 确认批量创建 |
| 280 | + |
| 281 | +**Section sources** |
| 282 | +- [USAGE_GUIDE.md](file://doc/USAGE_GUIDE.md#L232-L241) |
| 283 | +- [HEADER_CONFIG_USER_GUIDE.md](file://doc/HEADER_CONFIG_USER_GUIDE.md#L17-L32) |
| 284 | + |
| 285 | +## 故障排查 |
| 286 | + |
| 287 | +### 规则不生效 |
| 288 | + |
| 289 | +**可能原因**: |
| 290 | +- 规则被禁用 |
| 291 | +- 作用域配置不匹配 |
| 292 | +- 优先级被其他规则覆盖 |
| 293 | + |
| 294 | +**解决方法**: |
| 295 | +1. 检查规则状态是否为「启用」 |
| 296 | +2. 检查作用域配置是否匹配目标 URL |
| 297 | +3. 检查是否有更高优先级的规则 |
| 298 | + |
| 299 | +### 会话 Headers 看不到 |
| 300 | + |
| 301 | +**可能原因**: |
| 302 | +- 已过期(超过 TTL) |
| 303 | +- 浏览器会话已清除 |
| 304 | +- 后端服务重启 |
| 305 | + |
| 306 | +**解决方法**: |
| 307 | +1. 重新添加 Session Headers |
| 308 | +2. 设置更长的 TTL |
| 309 | +3. 考虑使用持久化规则 |
| 310 | + |
| 311 | +**Section sources** |
| 312 | +- [HEADER_CONFIG_USER_GUIDE.md](file://doc/HEADER_CONFIG_USER_GUIDE.md#L268-L292) |
0 commit comments