TyrusRC/burpsuite-swiss-knife-mcp

GitHub: TyrusRC/burpsuite-swiss-knife-mcp

通过 MCP 协议将 Claude Code 连接到 Burp Suite,让 AI 驱动渗透测试的全流程自动化。

Stars: 1 | Forks: 0

# Burp Suite Swiss Knife MCP [![Version](https://img.shields.io/badge/version-0.3.0-green.svg)](https://github.com/TyrusRC/burpsuite-swiss-knife-mcp/releases) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Burp Suite](https://img.shields.io/badge/Burp%20Suite-Pro%20%2F%20Community-FF6633?logo=portswigger&logoColor=white)](https://portswigger.net/burp) [![Powered by Claude](https://img.shields.io/badge/Powered%20by-Claude-D97757?logo=anthropic&logoColor=white)](https://www.anthropic.com/claude) [![MCP](https://img.shields.io/badge/MCP-Model%20Context%20Protocol-7c3aed)](https://modelcontextprotocol.io/) Open Source Security Index - Fastest Growing Open Source Security Projects Claude Code 作为你的渗透测试大脑 - 连接到 Burp Suite。 ## 架构 ``` graph TB subgraph Target T[Web Application] end subgraph Burp Suite BS[Burp Proxy Listener
:8080] -->|captures| PH[(Proxy History)] BS -->|passive scan| SC[(Scanner Findings)] BS -->|builds| SM[(Sitemap)] BScan[Burp Scanner] -->|active scan| SC SK[Swiss Knife Extension
REST API :8111] -->|reads| PH SK -->|reads| SC SK -->|reads| SM SK -->|ProxyTunnel
CONNECT + TLS| BS SK -->|auto-highlight
RED/ORA/YEL/GRN| ANN[Proxy Annotations] SK -->|collaborator| COLLAB[Burp Collaborator] SK -->|sessions| SESS[(Session Store)] SK -->|intercept| INT[Proxy Intercept] SK -->|monitors| MON[Traffic Monitors] end subgraph MCP Server MCP[Python MCP Server
stdio transport] -->|HTTP calls| SK MCP -->|formats & truncates| PROC[Processing Layer] MCP -->|reads| PAY[(Payload KB)] end subgraph Claude Code CC[Claude Code
Pentesting Brain] <-->|MCP protocol| MCP end T <-->|traffic| BS BS -->|forwards to target| T CC -->|"1. Scope & configure"| MCP CC -->|"2. Read what Burp found"| MCP CC -->|"3. Analyze attack surface"| MCP CC -->|"4. Craft & send requests"| MCP CC -->|"5. Test vulns (IDOR, race, HPP)"| MCP CC -->|"6. Monitor & annotate"| MCP CC -->|"7. Document findings"| MCP style CC fill:#7c3aed,color:#fff style SK fill:#f59e0b,color:#000 style MCP fill:#3b82f6,color:#fff style T fill:#ef4444,color:#fff ``` ## 工作流 ### 手动工作流(逐步控制) ``` flowchart LR A[1. Scope
configure_scope
auto-filter noise] --> B[2. Recon
get_sitemap
get_proxy_history
get_scanner_findings] B --> C[3. Analyze
extract_parameters
find_injection_points
detect_tech_stack] C --> D[4. Arm
get_payloads
context-aware
WAF bypass] D --> E[5. Attack
session_request
run_flow
fuzz_parameter] E --> F{Precision
tests?} F -->|IDOR| G[test_auth_matrix] F -->|Race| H[test_race_condition] F -->|HPP| I[test_parameter_pollution] F -->|Blind| J[auto_collaborator_test] F -->|CORS| G2[test_cors] F -->|JWT| H2[test_jwt] F -->|GraphQL| I2[test_graphql] F -->|Cloud SSRF| J2[test_cloud_metadata] G --> K[6. Document
save_finding
export_report] H --> K I --> K J --> K G2 --> K H2 --> K I2 --> K J2 --> K E -->|iterate| C style A fill:#6366f1,color:#fff style B fill:#3b82f6,color:#fff style C fill:#0ea5e9,color:#fff style D fill:#14b8a6,color:#fff style E fill:#f59e0b,color:#000 style G fill:#ef4444,color:#fff style H fill:#ef4444,color:#fff style I fill:#ef4444,color:#fff style J fill:#ef4444,color:#fff style G2 fill:#ef4444,color:#fff style H2 fill:#ef4444,color:#fff style I2 fill:#ef4444,color:#fff style J2 fill:#ef4444,color:#fff style K fill:#22c55e,color:#fff ``` ### 自适应扫描工作流(知识驱动自动化) ``` flowchart LR S[1. Session
create_session
with base_url] --> D[2. Discover
discover_attack_surface
crawl + map + score] D --> R{Review
results} R -->|auto| P[3. Probe
auto_probe
24 vuln categories
server-side matchers] R -->|targeted| Q[quick_scan
probe_endpoint
batch_probe] P --> F[4. Findings
auto-scored
anomaly detection] Q --> F F --> K[5. Document
save_finding
export_report] style S fill:#6366f1,color:#fff style D fill:#3b82f6,color:#fff style R fill:#0ea5e9,color:#fff style P fill:#f59e0b,color:#000 style Q fill:#f59e0b,color:#000 style F fill:#ef4444,color:#fff style K fill:#22c55e,color:#fff ``` ## 设置 ### 快速设置(推荐) **Linux / macOS:** ``` chmod +x setup.sh && ./setup.sh ``` **Windows (PowerShell):** ``` .\setup.ps1 ``` **Windows (双击):** 运行 `setup.bat`。 这会安装所有必需的依赖项(Java 21+、Maven、Python 3.11+、uv、Go、Playwright Chromium),构建项目,安装可选的侦察工具(subfinder、nuclei、katana),并生成 `.mcp.json`。 **要求:** Java 21 或更高版本。如果安装脚本无法为您安装,请从 [Adoptium Temurin](https://adoptium.net/temurin/releases/?version=21) 获取。 ### 健康检查 运行 `./doctor.sh`(跨平台:Linux / macOS / Windows git-bash)以验证您的安装: ``` OK: 18 optional missing: 4 failures: 0 Healthy. Optional items in [--] can be installed when needed. ``` 检查 Java 21+、Maven、uv、Python(拒绝 Windows Store 存根)、扩展 JAR、MCP venv + 工具数量、Burp 扩展 API (127.0.0.1:8111)、Burp 代理监听器 (127.0.0.1:8080)、Playwright Chromium、可选的侦察工具以及项目配置文件。仅在出现严重故障时以非零状态退出。 ### 手动设置 ### 1. 构建并加载 Burp 扩展 ``` cd burp-extension mvn package ``` 在 Burp Suite 中加载 `target/burpsuite-swiss-knife-0.3.0.jar`: - **Extensions -> Add -> Java -> Select JAR** - 验证:在 Burp 的输出日志中检查 "Swiss Knife MCP started on port 8111" ### 2. 安装 Python MCP Server ``` cd mcp-server uv venv uv sync ``` ### 3. 配置 Claude Code 在项目根目录中创建一个 `.mcp.json` 文件。将路径替换为您克隆仓库的实际路径。 **Linux:** ``` { "mcpServers": { "burpsuite": { "command": "/home/user/burpsuite-swiss-knife-mcp/mcp-server/.venv/bin/python", "args": ["-m", "burpsuite_mcp"] } } } ``` **macOS:** ``` { "mcpServers": { "burpsuite": { "command": "/Users/user/burpsuite-swiss-knife-mcp/mcp-server/.venv/bin/python", "args": ["-m", "burpsuite_mcp"] } } } ``` **Windows:** ``` { "mcpServers": { "burpsuite": { "command": "C:\\Users\\user\\burpsuite-swiss-knife-mcp\\mcp-server\\.venv\\Scripts\\python.exe", "args": ["-m", "burpsuite_mcp"] } } } ``` **WSL (Burp 在 Windows 上运行,Claude Code 在 WSL 中运行):** ``` { "mcpServers": { "burpsuite": { "command": "/mnt/c/path/to/burpsuite-swiss-knife-mcp/mcp-server/.venv/bin/python", "args": ["-m", "burpsuite_mcp"], "env": { "BURP_API_HOST": "172.x.x.x" } } } } ``` ## 工具(共 167 个) ### 代理历史路由 所有向目标发送请求的工具都通过 Burp 在 `127.0.0.1:8080` 的代理监听器进行路由,因此请求/响应对会出现在 **Proxy → HTTP history** 中,以便手动审查和在 Repeater 中重放。这包括: - Java 端 HTTP 工具(`send_http_request`、`curl_request`、`session_request`、`send_raw_request`、`resend_with_modification`、`probe_endpoint`、`auto_probe`、`bulk_test`、`fuzz_parameter`、`test_*`、`run_macro`、`quick_scan`、`batch_probe`、`discover_hidden_parameters`、`fetch_resource`)。 - 外部侦察工具(`run_nuclei`、`run_ffuf`、`run_dalfox`、`run_subfinder`)通过其原生的 `-proxy` 标志。 - 浏览器工具(`browser_navigate`、`browser_crawl` 等)通过 Playwright 的 `--proxy-server`。 仅限情报查询(`search_cve`、`query_crtsh`、`fetch_wayback_urls`)保持直接连接 - 它们不触及目标,也不应出现在代理历史中。 ### 按置信度自动高亮 `auto_probe` 根据计算出的置信度分数,为每个代理历史条目标记高亮颜色和简短注释: | 置信度 | 颜色 | 含义 | |---|---|---| | ≥ 0.90 | RED | 已确认证据 - 匹配器触发并带有高提升 + 确凿的异常 | | 0.60–0.89 | ORANGE | 强烈怀疑 - 匹配器命中或多信号异常集群 | | 0.30–0.59 | YELLOW | 常规探测 - 存在一些信号,需要后续跟进 | | < 0.30 | GREEN | 基线捕获或接近零的信号 | 按 Highlight 对 Proxy 面板进行排序,以查看按置信度分组的探测结果对。相同的置信度会流入 `save_finding(confidence=...)` 以及 `generate_report` / `format_finding_for_platform` 输出的置信度行中。 ### 范围与配置 | 工具 | 描述 | |------|-------------| | `configure_scope` | 一键范围设置,包含包含/排除模式 + 自动过滤约 60 个追踪器/广告/CDN 噪音域名 | | `get_scope` | 当前目标范围规则 | | `check_scope` | 检查 URL 是否在范围内 | | `add_to_scope` | 将 URL 添加到范围 | | `remove_from_scope` | 从范围中移除 URL | ### 会话管理 | 工具 | 描述 | |------|-------------| | `create_session` | 持久化攻击会话,包含 cookies、headers、auth tokens | | `session_request` | 自由构造任何请求 - 自动应用会话状态,cookie jar 自动更新 | | `extract_token` | 通过 regex、json_path、header、cookie 从响应中提取 CSRF/session/任何值 | | `run_flow` | 在一次调用中执行多步攻击链 - 登录 + 提取 CSRF + 使用 `{{variable}}` 插值进行利用 | | `list_sessions` | 列出具有状态摘要的活跃会话 | | `delete_session` | 清理会话 | ### 读取(Burp 发现的内容) | 工具 | 描述 | |------|-------------| | `get_proxy_history` | 具有过滤器(URL、方法、状态)的代理历史 | | `get_request_detail` | 某个历史项的完整请求/响应 | | `get_scanner_findings` | 按严重程度/置信度分类的扫描器发现 | | `get_sitemap` | 从 sitemap 中发现的所有 URL | | `get_cookies` | 来自 Burp cookie jar 的 cookies | | `get_websocket_history` | 来自代理的 WebSocket 消息 | ### 分析(攻击面) | 工具 | 描述 | |------|-------------| | `extract_parameters` | 请求中的所有参数(query、body、cookie) | | `extract_forms` | 响应中的 HTML 表单和输入 | | `extract_api_endpoints` | API 路径、JS fetch 调用、链接 | | `find_injection_points` | 风险评分的注入点(SQLi、XSS、SSRF...) | | `detect_tech_stack` | 服务器技术、框架、安全 headers | | `extract_js_secrets` | AWS 密钥、tokens、密码、内部 URL(TruffleHog 质量) | | `get_unique_endpoints` | 带有参数名的去重端点 | | `smart_analyze` | 一次调用综合分析 - 技术栈、注入点、参数、表单、机密信息 | | `analyze_dom` | DOM 结构 + JS sink/source/原型污染分析 | ### 浏览器(隐蔽无头模式,流量通过 Burp 代理) | 工具 | 描述 | |------|-------------| | `browser_navigate` | 导航到 URL - 所有流量(页面、JS、CSS、XHR)都通过 Burp 的代理 | | `browser_crawl` | 通过跟踪链接自动抓取目标 - 填充代理历史的最快方式 | | `browser_interact_all` | 点击页面上的每个按钮、链接和开关 - 最大化代理历史覆盖率 | | `browser_click` | 通过 CSS 选择器点击元素 - 触发导航、AJAX、表单提交 | | `browser_fill` | 用值填充表单字段 | | `browser_submit_form` | 填充多个表单字段并在一次调用中提交 | | `browser_get_links` | 获取当前页面上的所有链接 | | `browser_get_page_info` | 页面概览 - URL、标题、cookies、表单、输入、脚本 | | `browser_execute_js` | 在页面上执行 JavaScript - 提取数据、测试 DOM 漏洞、检查 Angular 作用域 | | `browser_close` | 关闭浏览器并释放资源 | ### 狩猎顾问 | 工具 | 描述 | |------|-------------| | `get_hunt_plan` | 获取目标的优先测试计划 - 阶段、工具顺序、按技术栈划分的漏洞优先级。任何狩猎的首次调用。 | | `get_next_action` | 获取唯一的最佳下一步操作 - 返回要执行的一个特定工具调用。替代策略推理。 | | `run_recon_phase` | 在一次调用中执行整个侦察阶段 - 会话 + 获取 + 技术检测 + 分析 + 敏感文件 | | `assess_finding` | 根据完整的 7 问关卡(范围、可重现性、影响、去重、证据、NEVER-SUBMIT 列表、分类测试)验证疑似发现。返回 REPORT / NEEDS MORE EVIDENCE / DO NOT REPORT 以及一个建议的置信度,可直接传递给 `save_finding(confidence=...)`。 | | `pick_tool` | 给定任务描述,返回带有示例参数的最佳工具。 | ### 发送(通过 Burp) 本节中的所有工具都通过 Burp 的代理监听器进行路由 - 请求 + 响应将传送到 Proxy → HTTP history。 | 工具 | 描述 | |------|-------------| | `send_http_request` | 发送结构化的 HTTP 请求(方法、URL、headers、body) | | `send_raw_request` | 发送原始 HTTP 字节 - 用于 HTTP 走私、CRLF、畸形请求的精确字节控制 | | `curl_request` | 类似 curl 的界面,带有可选的重定向跟踪、Basic/Bearer 认证、cookies、JSON/表单快捷方式。`follow_redirects` 默认为 `False` 以防止在 302 时发生跨范围 cookie 泄露 | | `resend_with_modification` | 选取一个代理历史项,修改 headers/body/path/method,重新发送 | | `send_to_repeater` | 将请求发送到命名的 Repeater 标签页以进行手动迭代 | | `send_to_intruder` | 将请求发送到 Intruder(点选式 payload 位置) | ### 代理控制 | 工具 | 描述 | |------|-------------| | `enable_intercept` | 启用 Burp 代理拦截 - 暂停请求以供审查 | | `disable_intercept` | 禁用拦截 - 恢复正常流量 | | `get_intercept_status` | 检查当前是否启用了拦截 | | `set_match_replace` | 添加匹配和替换规则以自动修改代理流量(添加 headers、交换 tokens、移除 CSP)。除非 `force=True`,否则拒绝针对 Host、Authorization、Cookie、Content-Length 或 Transfer-Encoding headers 的规则。如果规则未限定在 `in_scope` 范围内,则会发出警告 | | `get_match_replace` | 列出活动的匹配和替换规则 | | `remove_match_replace` | 通过 ID 移除特定的匹配和替换规则 | | `clear_match_replace` | 移除所有匹配和替换规则 | | `annotate_request` | 在 Burp UI 中用颜色 + 注释标记代理历史项 | | `annotate_bulk` | 一次批注多个代理项 | | `get_annotations` | 读取某个代理项的批注(颜色 + 注释) | | `get_proxy_stats` | 流量统计 - 总请求数、唯一主机数、方法/状态分布 | | `get_live_requests` | 从给定索引轮询新的代理请求 - 观察实时流量 | | `register_traffic_monitor` | 注册基于模式的流量监控器 - 被动监视 API 密钥、管理路径、SQL 错误 | | `check_traffic_monitor` | 检查已注册的监控器是否命中 | | `remove_traffic_monitor` | 移除流量监控器 | ### 响应提取 仅从响应中提取您需要的值,而不是阅读整个 body。 | 工具 | 描述 | |------|-------------| | `extract_regex` | 通过正则表达式提取数据,带有的组索引和 `find_all` | | `extract_json_path` | 使用路径表达式从 JSON 响应中提取值(`$.data.users[0].email`,通过 `$.items[*].id` 支持通配符) | | `extract_css_selector` | 使用类 CSS 选择器提取 HTML 元素(`input[name=csrf_token]`,属性可选) | | `extract_headers` | 提取命名的响应/请求 headers,或在 `names` 为空时提取所有 headers | | `extract_links` | 从 HTML 中提取链接 - anchors、forms、scripts、images、iframes;过滤 `internal` / `external` / `all` | | `get_response_hash` | 响应 body 的 SHA-256/MD5/SHA-1 哈希,用于快速变更检测 | ### 编码与转换 | 工具 | 描述 | |------|-------------| | `decode_encode` | base64、URL、HTML、hex、JWT 解码、MD5/SHA1/SHA256、双重 URL 编码、unicode 转义 | | `transform_chain` | 按顺序链式执行多个编码操作 - 输出馈送到下一步(WAF 绕过构造) | | `smart_decode` | 自动检测编码并递归解码直到纯文本 - 剥离多层编码 | | `detect_encoding` | 分析文本以检测应用的编码及其置信度 | ### Repeater(双向) | 工具 | 描述 | |------|-------------| | `send_to_repeater_tracked` | 发送到 Burp Repeater 并在服务器端跟踪以进行迭代测试 | | `get_repeater_tabs` | 列出所有带有状态的已跟踪 Repeater 标签页 | | `repeater_resend` | 使用修改(headers、body、path、method)重新发送已跟踪的标签页 - 迭代并比较 | | `remove_repeater_tab` | 移除已跟踪的 Repeater 标签页 | ### 宏(可重用请求序列) | 工具 | 描述 | |------|-------------| | `create_macro` | 定义具有跨步骤变量提取的多步请求序列 | | `run_macro` | 执行宏 - 提取 CSRF tokens、登录、在一次调用中链式执行多步利用 | | `list_macros` | 列出所有已定义的宏 | | `get_macro` | 获取完整的宏定义,包括步骤和提取规则 | | `delete_macro` | 删除宏 | ### 自适应扫描引擎 | 工具 | 描述 | |------|-------------| | `scan_target` | 双模式扫描:`discover` 抓取 + 映射攻击面;`probe` 在指定目标上运行知识驱动的探测 | | `discover_attack_surface` | 抓取目标并映射端点、参数(风险评分)、表单、技术栈 | | `auto_probe` | 知识驱动的漏洞探测。自动检测技术,从 25 个类别中选择匹配的探测,运行服务器端匹配器,为每个发现发出**置信度分数**,并自动批注代理历史条目(RED ≥ 0.9,ORANGE 0.6–0.9,YELLOW 0.3–0.6,GREEN 基线)。参数名匹配经过分词化,因此 `productId` / `post_id` 会匹配像 `id` 这样的裸分词条目 | | `quick_scan` | 发送请求并在一次响应中返回技术栈、注入点、参数、表单和机密信息 | | `probe_endpoint` | 自适应漏洞探测 - 自动为 SQLi/XSS/SSTI/RCE 选择 payloads,检查反射和异常 | | `batch_probe` | 在一次调用中测试多个端点 - 返回每个端点的状态、长度、时间 | | `discover_hidden_parameters` | Arjun 风格的隐藏参数发现 - 暴力破解常见参数名,检测异常 | | `full_recon` | 具有深度级别 `quick` / `standard` / `deep` 的一次调用侦察管道 - 技术栈、端点、机密、headers、优先级 | | `bulk_test` | 测试所有端点是否存在一种漏洞类型 - `sqli`、`xss`、`lfi`、`ssrf`、`ssti`、`command_injection`、`open_redirect`。对时间和状态异常进行 3 次迭代验证 | ### 精准攻击工具 | 工具 | 描述 | |------|-------------| | `test_auth_matrix` | 测试 N 个端点 x M 个认证状态 - 检测 IDOR 和破坏的访问控制 | | `test_race_condition` | 同时触发 N 个并发请求 - 检测双重支付、TOCTOU | | `test_parameter_pollution` | 测试跨 query/body/混合位置的 HPP | | `fuzz_parameter` | 带有 sniper/battering_ram/pitchfork/cluster_bomb 模式 + smart_payloads 自动选择的智能模糊测试 | | `compare_auth_states` | 比较有无认证的响应以检测 IDOR | | `compare_responses` | 增强型响应差异(headers、body、唯一词) | | `send_to_comparer` | 将两项发送到 Burp 的 Comparer | ### 边缘情况安全测试 | 工具 | 描述 | |------|-------------| | `test_cors` | 测试 CORS 配置 - origin 反射、null 绕过、通配符 + 凭据 | | `test_jwt` | 分析 JWT 的漏洞 - alg:none、密钥混淆、jku/x5u 注入、kid SQLi | | `test_graphql` | 测试 GraphQL 端点 - 内省、字段建议、批量查询、基于 GET 的 CSRF | | `test_cloud_metadata` | 测试针对云元数据的 SSRF - AWS IMDSv1/v2、GCP、Azure、DigitalOcean | | `discover_common_files` | 探测敏感文件 - .git、.env、actuator、调试端点、API 文档 | | `test_open_redirect` | 使用经过 Collaborator 验证的 payloads 测试开放重定向 - 协议相对、编码绕过 | | `test_lfi` | 测试 LFI/路径遍历 - Linux/Windows 遍历、PHP wrappers、空字节、编码绕过 | | `test_file_upload` | 测试文件上传绕过 - 双扩展名、content-type 不匹配、polyglot、SVG XSS | ### 高级测试 | 工具 | 描述 | |------|-------------| | `test_host_header` | Host header 注入 - 备用 host、X-Forwarded-Host、重复 headers、缓存投毒 | | `test_crlf_injection` | CRLF 注入 / HTTP 响应拆分 - header 注入、body 注入 | | `test_request_smuggling` | HTTP 请求走私 - CL.TE、TE.CL 探针及基于时间的检测 | | `test_mass_assignment` | 批量赋值 / 参数绑定 - 检测额外参数的接受情况(role、admin、price) | | `test_cache_poisoning` | Web 缓存投毒 - 未键入的 headers、缓存欺骗、参数隐蔽 | | `test_business_logic` | 业务逻辑 - 负值、零、大数、类型混淆、边界测试 | | `test_graphql_deep` | 扩展 GraphQL - 别名 DoS、批量滥用、深度限制、__typename、字段建议泄露 | | `parse_api_schema` | OpenAPI/Swagger 解析器 - 提取端点、参数、自动建议漏洞测试 | | `test_rate_limit` | 速率限制检测 + 绕过测试(X-Forwarded-For、X-Real-IP 轮换) | ### 扩展侦察(仅限 Python,无需外部工具) | 工具 | 描述 | |------|-------------| | `query_crtsh` | 通过 crt.sh 的证书透明度子域名发现 | | `fetch_wayback_urls` | 来自 Wayback Machine 的历史 URL - 查找旧端点、已移除的页面 | | `analyze_dns` | DNS 记录分析 - A、MX、NS、TXT、CNAME、SOA、DMARC、通配符检测 | | `test_subdomain_takeover` | 检测指向未认领服务的悬空 CNAME(GitHub Pages、S3、Heroku 等) | ### Burp 原生工具 | 工具 | 描述 | |------|-------------| | `websocket_connect` | 通过 Burp 打开 WebSocket 连接以测试基于 WS 的 API | | `websocket_send_message` | 在打开的 WebSocket 上发送文本消息 - 测试注入、认证、协议滥用 | | `websocket_close` | 关闭 WebSocket 连接 | | `websocket_list_connections` | 列出打开的 WebSocket 连接 | | `send_to_organizer` | 将代理项发送到 Burp 的 Organizer 标签页进行分类 | | `send_bulk_to_organizer` | 一次将多个项发送到 Organizer | | `get_project_info` | Burp 项目名称、ID、版本、版本类型 | | `get_logger_entries` | 带有时间数据、批注和元数据的 Logger 条目 | | `send_to_intruder_configured` | 使用自动检测或手动插入点位置发送到 Intruder | ### 扫描器控制(Burp Professional) | 工具 | 描述 | |------|-------------| | `scan_url` | 在 URL 上启动主动扫描 | | `crawl_target` | Spider/爬取以发现端点 | | `get_scan_status` | 检查扫描进度 | | `cancel_scan` | 从跟踪中取消/移除活动扫描 | | `pause_scan` | 获取扫描状态(Montoya API 不支持暂停) | | `resume_scan` | 获取扫描状态(扫描持续运行) | | `get_new_findings` | 从某个计数开始轮询新的扫描器发现 - 实时发现检测 | | `get_issues_dashboard` | 所有发现的紧凑仪表板 - 严重性计数、受影响的主机、最高 critical/high、后续步骤 | ### Payload 与知识库 | 工具 | 描述 | |------|-------------| | `get_payloads` | 来自 HackTricks/PayloadsAllTheThings 的上下文感知 payloads - XSS、SQLi、SSTI、SSRF、命令注入、路径遍历、XXE、认证绕过、CORS、CSRF、竞态条件、HPP、开放重定向、LFI、文件上传 | ### 目标情报(持久化内存) | 工具 | 描述 | |------|-------------| | `save_target_intel` | 跨会话持久化目标上下文(配置文件、端点、覆盖率、发现、指纹、模式) | | `load_target_intel` | 加载存储的情报 - 使用 `"all"` 获取紧凑摘要或特定类别 | | `check_target_freshness` | 对关键页面进行指纹识别以检测自上次会话以来的更改 | | `save_target_notes` | 保存自由格式的 markdown 笔记(人工可编辑的观察和纠正) | | `lookup_cross_target_patterns` | 从具有重叠技术栈的其他目标中查找攻击模式 - 来自目标 A 的技术为目标 B 提供信息 | ### CVE 情报 | 工具 | 描述 | |------|-------------| | `check_tech_vulns` | 将检测到的技术栈与本地 `knowledge/tech_vulns.json` 进行匹配 - 返回匹配的 CVEs、错误配置和建议的测试命令。版本范围使用精确段匹配(`8.1` 匹配 `8.1.x` 但不匹配 `8.10`) | | `search_cve` | 默认进行实时的 NVD 2.0 API 查询。返回关键字或特定 `CVE-YYYY-NNNN` 的结构化 CVE 记录(id、发布日期、CVSS 分数、摘要)。当 NVD 进行速率限制时,使用 `live_lookup=False` 回退到仅 URL 输出 | ### 专业报告 | 工具 | 描述 | |------|-------------| | `generate_report` | 包含执行摘要、方法论、分类发现、覆盖率、建议的完整渗透测试报告。每个发现都包含其置信度范围(Confirmed / Strong suspicion / Weak signal / Informational) | | `format_finding_for_platform` | 将发现格式化为适用于 HackerOne、Bugcrowd、Intigriti 或 Immunefi 的格式。针对 NEVER-SUBMIT 类别,严重性会进行诚实上限约束(仅 clickjacking 变为 LOW,仅 missing-header 变为 INFO),并且 CVSS 向量是从限制后的严重性推导出的,而不是字面上的占位符 | ### 外部侦察 | 工具 | 需要 | 描述 | |------|----------|-------------| | `check_recon_tools` | 无 | 检查已安装的外部侦察工具 + DNS 健康检查 | | `probe_hosts` | 无 | 探测存活主机 - 状态码、服务器 header、响应大小(使用 Burp HTTP 客户端) | | `run_subfinder` | subfinder | 被动枚举子域名 | | `_nuclei` | nuclei | 基于模板的漏洞扫描器,带有严重性/标签过滤 | | `run_katana` | katana | 带有 JS 解析、无头模式、表单填充、已知文件的 Web 爬虫 | | `run_recon_pipeline` | 视情况而定 | 核心侦察链:subfinder -> katana -> nuclei(平滑降级) | `probe_hosts` 和 `check_recon_tools` 始终有效 - 无需外部工具。基于 Go 的工具(`subfinder`、`nuclei`、`katana`)是可选的,需要安装: ``` # 安装 Go 工具 (可选) go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest ``` ### 关联 | 工具 | 描述 | |------|-------------| | `search_history` | 按查询、方法、状态搜索历史 | | `get_findings_for_endpoint` | 某个 URL 的所有发现(扫描器 + 手动) | | `get_response_diff` | 对比两个响应 | ### Collaborator (OOB 测试) | 工具 | 描述 | |------|-------------| | `generate_collaborator_payload` | 生成用于盲测试的 Collaborator URL | | `get_collaborator_interactions` | 检查 DNS/HTTP/SMTP 回调 | | `auto_collaborator_test` | 一步到位:注入 + 发送 + 轮询盲漏洞 | ### 导出与资源 | 工具 | 描述 | |------|-------------| | `export_sitemap` | 导出为紧凑的 JSON 或 OpenAPI 3.0 | | `get_static_resources` | 列出代理历史中的 JS/CSS/source maps | | `fetch_resource` | 获取特定的 JS/CSS 文件内容 | | `fetch_page_resources` | 自动获取页面链接的所有资源 | ### 笔记与报告 | 工具 | 描述 | |------|-------------| | `save_finding` | 保存漏洞发现。**零噪音关卡(服务器强制):**需要 `evidence={"logger_index" \| "proxy_history_index" \| "collaborator_interaction_id": ...}` 解析为实时的 Burp 数据;时间/盲漏洞类型需要带有 ≥2 个条目的 `reproductions[]`;NEVER SUBMIT 漏洞类型需要引用现有发现 ID 的 `chain_with[]`。接受 `[0.0, 1.0]` 中的 `confidence` 值。持久化到 `.burp-intel//findings.json` 和 Burp 的内存存储;按 `(endpoint + title + parameter)` 去重 | | `get_findings` | 列出带有可选端点过滤器的已保存发现 | | `export_report` | 将所有发现导出为 markdown 或 JSON | **零噪音关卡:**没有经过验证的证据的 `save_finding` 调用会被硬拒绝并返回 400 错误。Burp 扩展根据 `api.proxy().history()` 大小验证 `evidence.logger_index` / `proxy_history_index`;除非 `chain_with[]` 列出已有的发现 ID,否则拒绝 27 种 NEVER SUBMIT 漏洞类型;并且拒绝任何没有 `reproductions[]` ≥ 2 的 `*_blind` / `sqli_time` / `race_condition` / `request_smuggling` 发现。自由格式的证明文本移至 `evidence_text`,因此它不会与结构化的 `evidence` 对象冲突。 **在 `save_finding`、`assess_finding` 和 `auto_probe` 中使用的置信度约定:** | 范围 | 级别 | 典型证据 | |---|---|---| | ≥ 0.90 | Confirmed | 复现的 PoC、供应商错误泄露、Collaborator 回调、scanner CERTAIN | | 0.60–0.89 | Strong suspicion | 多个异常、匹配器命中但无完整复现 | | 0.30–0.59 | Weak signal | 单一状态/长度异常,需要更多工作 | | < 0.30 | Informational | 观察到的行为,尚无攻击路径 | `assess_finding` 在其输出中返回一个建议的置信度 - 您可以将该值直接传递给 `save_finding(confidence=...)`。 ## Bug Bounty 技能 位于 `.claude/skills/` 中的 Claude Code 技能,编码了专业的 Bug Bounty 方法论: | 技能 | 目的 | |-------|---------| | `hunt.md` | 系统性漏洞狩猎 - 加载目标内存、检查新鲜度、按技术自适应优先级进行测试(PHP: SQLi/LFI/upload,Java: deser/XXE,API: IDOR/auth),在检查点保存进度 | | `verify-finding.md` | 强制步骤 0(在任何保存之前进行 Logger 重放)+ 7 问验证关卡 + 17 种漏洞类型的证据要求 + NEVER SUBMIT 列表(23+ 种不可报告的发现)。误报关卡:2 次或更多失败 = likely_false_positive | | `resume.md` | 从之前的会话继续 - 在已更改的端点上重新验证发现,显示覆盖率仪表板,建议优先的下一步操作 | | `chain-findings.md` | 漏洞链构建 - 通过 A->B->C 链升级低严重性发现。升级表将每个低危发现映射到具有所需证据的链路径 | | `report-templates.md` | 针对 HackerOne、Bugcrowd、Intigriti、Immunefi 的特定平台报告。CVSS 3.1 参考、质量检查清单、严重性过高危险信号 | | `autopilot.md` | 自主狩猎循环 - 熔断器(5 次 403 = 停止)、速率限制、检查点模式(paranoid/normal/aggressive)、范围保护、紧急停止 | | `dispatch-agents.md` | 并行代理编排 - 5 种带有提示模板的调度模式 | | `burp-workflow.md` | MCP 工具表面的工具选择决策树 | | `investigate.md` | 深度异常调查 - 过滤器映射、发现升级、攻击链 | | `craft-payload.md` | WAF/过滤器绕过工程 - 过滤器侦察、编码链、增量测试 | | `static-dynamic-analysis.md` | JS 源代码分析、DOM sink/source 追踪、行为剖析、页面更改检测 | 在 `.claude/rules/` 中始终激活的规则: | 规则 | 目的 | |------|---------| | `hunting.md` | 每轮强制执行 24 条行为约束 - 范围安全、证据要求、7 问关卡、NEVER SUBMIT 列表、保存前重放(规则 24) | ## 设计理念 - **精准优于漫灌** - 不进行大规模暴力破解或枚举。使用 nuclei / ffuf / 外部扫描器来完成这些。本工具专注于由 Claude 推理驱动的上下文感知漏洞测试。 - **智能辅助优于冗长原语** - `run_flow` 在一次调用中执行多步攻击;`discover_attack_surface` + `auto_probe` 在两次调用中完成映射和探测;`extract_regex` / `extract_json_path` / `extract_css_selector` 仅从响应中提取您需要的值。 - **Claude 构思攻击** - 工具是执行引擎,而不是决策者。Claude 负责计划,工具负责执行。 - **构建块 + 智能辅助** - 用于创意攻击链的低级原语,以及在涉及服务器端协调(竞态条件、认证矩阵、Collaborator 自动测试)时的高级工具。 - **一切皆入代理历史** - 每个发送请求的工具都通过 Burp 的代理监听器进行隧道传输,以便狩猎者可以从 Proxy 面板审查、重放和手动迭代任何探测。 - **按置信度自动高亮** - `auto_probe` 将代理条目着色为 RED (≥ 0.90)、ORANGE (0.60–0.89)、YELLOW (0.30–0.59)、GREEN (< 0.30),因此分类就是一个按高亮排序的操作。 - **完全代理控制** - 拦截、匹配和替换(在 Host/Auth/Cookie/CL/TE headers 上具有安全拒绝列表)、批注、实时流量监控。 - **双知识系统** - `payloads/` 用于带有人类可读攻击指南的 `get_payloads` 工具;`knowledge/` 用于带有服务器端匹配器和异常检测的 `auto_probe` 引擎。 - **知识填补空白** - 策展的知识库涵盖了 Claude 从预训练中不知道的框架特定技术(Angular 沙箱绕过、Spring SSTI、WAF 绕过编码链、盲注入模式)。 - **持久化内存** - 目标情报在 `.burp-intel//` 中跨会话持久保存。Claude 无需重新扫描即可记住技术栈、端点、测试覆盖率和发现。陈旧度检测会重新验证已指纹识别的页面。 - **诚实发现** - 每个发现都带有置信度分数和状态。`assess_finding` 在保存之前强制执行完整的 7 问关卡(范围、可重现性、影响、去重、证据、NEVER-SUBMIT 列表、分类测试)。Burp 扩展本身**在服务器端硬拒绝**任何没有验证证据(实时 Logger/Proxy/Collaborator 查找)、没有时间/盲类型的 `reproductions[]` ≥ 2、或者其漏洞类型/标题命中 NEVER SUBMIT 黑名单(仅可通过 `chain_with[]` 指向现有发现 ID 来覆盖)的 `save_finding`。对于 NEVER-SUBMIT 漏洞类别,报告中的严重性会进行诚实上限约束。 ## 环境变量 适用于 Python MCP server(从 `.env` 或 `.mcp.json` 的 `env` 块读取): | 变量 | 默认值 | 描述 | |----------|---------|-------------| | `BURP_API_HOST` | `127.0.0.1` | Burp 扩展主机 | | `BURP_API_PORT` | `8111` | Burp 扩展端口 | | `BURP_API_TIMEOUT` | `30` | 请求超时(秒) | | `BURP_MAX_RESPONSE_SIZE` | `50000` | 最大响应 body 字符数 | | `BURP_PROXY_HOST` | `127.0.0.1` | Burp 代理监听器主机(由外部侦察 + 浏览器工具使用) | | `BURP_PROXY_PORT` | `8080` | Burp 代理监听器端口 | Java 扩展的 `ProxyTunnel`(由 Java 端 HTTP 工具使用)按以下顺序读取代理端点: 1. JVM 系统属性:`-Dswissknife.proxy.host=… -Dswissknife.proxy.port=…`(最高优先级;从 GUI 启动 Burp 时通过 `burpsuite_pro.vmoptions` 设置) 2. 环境变量:`BURP_PROXY_HOST` / `BURP_PROXY_PORT`(在 Burp 从加载了您的 `.env` 的 shell 启动时有效) 3. 回退:`127.0.0.1:8080` 扩展在启动时记录已解析的端点,例如 `Proxy tunnel → 127.0.0.1:8080 (override with env BURP_PROXY_HOST/PORT or -Dswissknife.proxy.{host,port})`。 ## 要求 - Burp Suite Professional(用于 scanner + collaborator)或 Community Edition - Java 21+ - Python 3.11+ - Claude Code ## 支持平台 - **Linux**(已测试) - **macOS**(已测试) - **Windows**(支持 - 在配置中使用 `.venv\Scripts\python.exe`) - **WSL**(支持 - 将 `BURP_API_HOST` 设置为 Windows 主机 IP,将扩展绑定到 `0.0.0.0`) Java Burp 扩展和 Python MCP server 均使用独立于平台的库。没有特定于操作系统的依赖项。 ## 许可证 本项目基于 [Apache License 2.0](LICENSE) 授权。 此工具与 Burp Suite(PortSwigger Ltd 的产品)集成,但未获得 PortSwigger 的附属或认可。请负责任地使用,并且仅在您有授权测试的系统上使用。
标签:AI辅助安全, Anthropic, Burp Suite, CISA项目, CIS基准, Claude, CVE检测, DLL 劫持, JS文件枚举, LLM, MCP, Model Context Protocol, Python, REST API, Unmanaged PE, Web安全, 代理拦截, 域名枚举, 大语言模型, 安全测试插件, 无后门, 特征检测, 结构化查询, 网络安全, 自动化安全, 蓝队分析, 逆向工具, 隐私保护