我的笔记

破解安装

项目地址: https://github.com/WankkoRee/BurpLoaderKeygenCnF

burp 对 java 版本的变化:2020.4 版本将不在支持 java 8;2022.12 以后的版本需要 Java 17 或更高版本才能运行

启动失败原因

1)burp 版本太高,需要高版本 java 才能运行。尽量使用低版本的 burp

2)版本没问题,但是双击还是打不开,需要用命令行才能打开。解决方法是修改注册表 计算机\HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command 需要加个==-jar==参数。注意,如果没有的话,就找到安装的 Java 文件夹里的 javaw. exe 文件运行一下,或随便找个 xxx. jar 文件运行一下。再展开注册表就行了。

参考: https://www.cnblogs.com/sungong1987/p/9310161.html

burpsuite 的 repeater 的 render 不显示或显示不全

mac 上有这个问题,换 burp 版本可以解决,在 mac 上,2022.2.4 版本可以正常使用

BurpSuite 插件

下载对应 jar 包

Jython: https://www.jython.org/download.html

注意:加载路径不要有中文

  • APIKit:可以==主动/被动==扫描发现应用泄露的 API文档,并将 API文档 解析成 BurpSuite 中的数据包用于API 安全测试

项目地址: https://github.com/API-Security/APIKit

  • burpFakeIP:服务端配置错误情况下用于伪造 ip 地址进行测试的 Burp Suite 插件

项目地址: https://github.com/TheKingOfDuck/burpFakeIP

BurpFastJsonScan:一款基于 BurpSuite 的==被动式 FastJson 检测插件==: https://github.com/pmiaowu/BurpShiroPassiveScan/

嫌弃内置key不够多,可以这样

打开: ./BurpShiroPassiveScan/resources/config.yml
找到: application.shiroCipherKeyExtension.config.payloads

然后在后面添加新key即可

注: 修改了配置,记得重新加载插件,这样才会生效

Hae

规则库:星球有或者云盘

注意:新版本不支持自定义配置文件,只能把自己的配置文件放到 C:\Users\当前用户\.config\HaE 目录下。

RouteVulScan

项目地址: https://github.com/F6JO/RouteVulScan

RouteVulScan 是使用 java 语言基于 burpsuite api 开发的可以递归检测脆弱路径的 burp 插件。==被动扫描==

TurboIn-truder

项目地址: https://github.com/PortSwigger/turbo-intruder

host:192.168.3.1
x-req:%s          # 在host下面添加

使用问题

笔记本光标偏移问题

屏幕分辨率的问题,缩放比为 100%就不会出现这种情况。或者在 java 的安装目录下找到 bin 目录,找到 javaw. exe, 右键属性,再选择兼容性,更改高 DPI 设置,改为系统(增强),一路确定即可。

返回包中文显示方块

修改字体样式和大小,然后选择 UTF-8 编码(也可以试试 GBK)

修改字体配置

抓不到本地数据包

访问 127.0.0.1 地址但是 burp 抓不到数据包,其他网站没问题,只有本地出现这个问题。

使用本地 ip 地址进行访问。例如主机的 ip 地址是 192.168.31.210,将 proxy 的代理设置为 192.168.31.210:8080 代理,burp 的选项也改为 192.168.31.210:8080 然后使用 192.168.31.210 进行访问网站,就可以抓到包了。

Intruder 模块

参考:Burp Suite中Intruder模块的使用详解

Settings

payload设置

Payload Sets

Payload type

Simple list:简单字典

Runtime file:运行文件

Custom iterator:自定义迭代器

Character substitution:字符替换

Recursive grep:递归查找

Illegal unicode:非法字符

Character blocks:字符块

Numbers:数字组合

Dates:日期组合

Brute forcer:暴力破解

Null payloads:空 payload

Username generato:用户名生成

copy other payload:复制其他 payload

Payload processing

注意:规则顺序有时不能乱。例如爆破 MD 5 大写时,要先选择 MD 5 加密,在选择大写转换操作。

Modify case:payload 进行大小写操作

  • To lower case:转为小写

  • To upper case:转为大写

  • To Propername

  • To ProperName

BurpSuite 使用技巧

显示特定的网址数据包,添加高亮标注。

Turbo 插件使用方法

参考: https://blog.csdn.net/ma963852/article/details/129585309

其实 %s 是插入的 payload

Reqs: 请求数

Queued: 0

Duration: 使用时间

RPS: 每秒请求数

Connections: 30 | Retries: 0 Fails: 0 | Next: null Completed

响应包可以自定义过滤展示: https://github.com/PortSwigger/turbo-intruder/blob/master/decorators.md

1、并发测试

使用脚本 race.py。默认显示全部响应包

使用方式:在 Host 字段下添加 x-req:%s ,这是固定格式,必须有。

注意:默认并发 30 次

2、自定义 payload

使用脚本 basic.py 或者 default.py

在请求包的需要替换的字段附近添加 %s,然后设置 payload 字典。默认显示不是 404 的响应包

可以适当修改 concurrentConnections 的值

burp 生成 POC 验证 CSRF

pikachu 靶场,CSRF-get ,登录后修改个人信息,抓取数据包

在弹出的 CSRF Poc generater 页面,点击"Test in browser—>Copy",复制生成的 URL

在另一个浏览器打开这个网址(需要连接 burp 代理才能访问这个链接),登录另一个账户,然后点击这个链接的 submit request 按钮,即可触发

分组并发功能

右键创建分组

选择要添加进去的数据包

然后选中这个分组,在 send 处,下拉菜单选择最后一个

burpsuite 抓取 Python 脚本发出的 http/https 请求包

写 Python 脚本的时候,使用 requests 的库发出的请求无法看见,调试的时候比较困难,可以将脚本发出的请求发送到不让拍当中,便于查看。

import requests  
# 代理服务器
proxies = {"http": "http://127.0.0.1:8080", "https": "http://127.0.0.1:8080"}  
# 忽视ssl证书告警,新版requests库需要
requests.packages.urllib3.disable_warnings()  
r = requests.get("https://www.baidu.com/", proxies=proxies, verify=False)  
print(r.text)

问题:抓取 http 请求没问题,抓取 https 要么报错,要么抓取不到

换了一个 burp 版本(2022.11.4),新版本不行,需要老版本

换版本也不行,可能是 Python 版本或库版本的问题

使用 Proxifier+burp 抓包

抓取 PC 主机 exe 的数据包或者小程序的数据包。下载地址: Proxifier_俄罗斯破解版

1、安装 burp 证书

第一种方式:

下载证书后,双击安装

注意,要选择受信任的根证书颁发机构

点击确定,点击下一步,导入成功

第二种方式:

Win+R 运行输入 certmgr.msc,找到“受信任的根证书颁发机构”证书右键->所有任务->导入->把刚下载的 cacert.der 导入进去,选择“所有文件(.)”。

2、配置 Proxifier

设置 Proxifier,Profile->Proxy Servers...->Add 添加一个 HTTPS 代理,填入 Burpsuite 监听的 IP 地址和端口即可。

之后我们再配置下代理规则,Profile->Proxification Rules...->Add 添加一条规则。

参考:

过滤数据包

在 bambda

过滤响应码为 404 和 400 的

int code = requestResponse.response().statusCode();
return code != 404 && code != 400;

创建自定义扫描检查

参考: https://portswigger.net/burp/documentation/desktop/extend-burp/custom-scan-checks/creating

  • Script:使用 Java 编写,并可访问我们的 Montoya API。如果您需要构建更复杂的检查,这是最佳选择。
  • BChecks:采用我们定制的BCheck语言编写。最适合快速、轻量级的检查。

BChecks 脚本

创建有效的 BCheck 需要遵循一些结构规则:

  • 每个定义都必须以一个对象开头 metadata
  • 每个定义必须恰好包含一条 given... then 语句。
  • 条件语句只能出现在 given... then 语句中。
  • 任何使用的 define or run for each 语句都必须放在 metadata 代码块之后,但放在 given... then 语句之前。
  • 使用 \n 声明的变量 run for each 具有外部作用域,而使用 define 声明的变量具有内部作用域。这意味着你不能 define 在后续 run for each 语句中使用通过 \n 声明的变量。

metadata:元数据

包含有关检查本身的信息。元数据对象对于所有 BCheck 都是必需的,并且必须放在定义的最开头。

metadata:
  language: v2-beta
  name: "Simple SQLi"
  description: "Tests insertion points for basic SQLi"
  author: "Peter Wiener"
  tags: "sql", "active", "sql-injection"

参数含义

一个简单的示例

https://portswigger.net/burp/documentation/scanner/bchecks/worked-examples/host

# 这一部分
metadata:
    language: v2-beta
    name: "Host-level"
    description: "Checks for an exposed git directory"
    author: "Carlos Montoya"

run for each:
    potential_path =
        "/.git/config",
        "/.git/config~"

given host then
    send request called check:
        method: "GET"
        path: {potential_path}

    if "[core]" in {check.response.body} then
        report issue:
            severity: info
            confidence: certain
            detail: `Git directory found at {potential_path}.`
            remediation: "Ensure your git directories are not exposed."
    end if
        

define:

report:报告

report issue:
        name: "找到特定漏洞的名称"
        severity: high
        confidence: certain
        detail: "这里编写漏洞的详细描述,支持变量替换。"
        remediation: "这里编写修复建议。"

参数含义(注意参数顺序不能乱,必须这样排序)

repeater 模块扫描

右键扫描,可以看到有,一共有 4 个选择

  • Passive scan selected message (被动扫描选中的请求)

核心逻辑:“不发一个新包,只做纯流量审计”。Burp 会静默分析这个响应包,看看里面有没有暴露敏感的内部敏感邮箱、硬编码的 API Key、或者使用了有已知 CVE 漏洞的旧版本前端组件。因为不发包,对目标服务器完全无害且零感知,适合在对测试要求极度严格的生产环境中使用。

可以看到,只有被动扫描部分

  • Active scan selected message (主动扫描选中的请求)

核心逻辑:“真枪实弹地轰炸”。Burp 会把这个请求里的参数(URL 参数、Body 表单、JSON、Cookie 等)全部拆解为插入点,然后调动内置字典、Bcheck 脚本以及你配置的漏洞探测规则,发送成百上千个修改后的 Payload 请求去试探服务器。注意:默认选择所以 payload,发包量很大,小心慎用

可以看到全部选择了,量太多了。

  • Configure scan for selected message (为选中的请求配置自定义扫描)

自定义扫描,可以自己选择扫描什么类型,例如只选择 SQL 注入和 xss,其他不测试。

  • 延伸右侧小菜单:Add to task: 4. Passive scans

区别点:前面三个选项,点击后都会专门为你这条请求新建一个独立的扫描任务(New Task),显示在 Dashboard 的任务列表里。

这个选项的含义:Burp 默认在后台会运行一个全局的、持续的被动扫描任务(通常编号是 Task 1 或 Task 4)。点击这个按钮,表示“不需要为我单独建任务,直接把我这条请求塞进后台那个已经存在的被动扫描任务队列里排队去分析”。这通常用于保持 Dashboard 界面的整洁,不至于让任务列表因为反复点击而变得密密麻麻。

怎么选:一般选择Configure scan for selected message

  • 因为被动扫描可以全局开启,被动扫描不发包,纯分析流量,所以全局开启一个被动扫描,这里就不用在手动测试了,除非没有将 repeater 加入进范围。
  • 没有必要将默认的 payload 全部测试,有些什么 TLS certificate 这种,没有必要去测试,挑重点的去测试,可以保存常用的配置,然后用到时直接导入。

burp 扫描配置

个人习惯:

  • Task1:全局开启一个 Passive 审计,只选择 Passive 级别的,不会发包,不会触发 waf,后台挂着,让 burp自动分析流量去吧(价值不高,聊胜于无)。
  • Task2:如果没有 waf,可以在启动一个主动审计扫描,一样在后台挂着,选择一些价值高的漏洞,burp 会自动尝试漏洞 payload。(注意:小心被封

下面这些漏洞扫描浪费时间,价值很低或者误报率高,一般不要勾选。

1、Passive 级别的不选,因为已经开了一个Task1,它就是专门进行 Passive 级别扫描的

2、价值低,误报高的
TLS cookie without secure flag set
TLS certificate
User agent-dependent response
Robots.txt file
Path-relative style sheet import
Flash cross-domain policy
Silverlight cross-domain policy
Client-side XPath injection (reflected DOM-based) 
Client-side XPath injection (stored DOM-based) 
Client-side JSON injection (reflected DOM-based) 
Client-side JSON injection (stored DOM-based) 
Cross-site request forgery (CSRF)   # 误报率高,建议单独手动检测

待定
Input returned in response (stored)    
Input returned in response (reflected) 



 

burp mcp 使用

安装 Claude Code 和 CC switch

burp 安装插件: https://github.com/PortSwigger/mcp-server

默认启动是 127.0.0.1:9876

使用 Claude code 或者其他工具链接 burp mcp 服务。我这里用的是 Claude Code 和 CCswitch,大模型是 DeepSeek V4 pro。

在 ccswitch 里面添加 mcp 配置

然后在命令行启动 Claude,输入 /mcp 就可以看到连接的 burp mcp 服务了。

如果连接失败,可能是配置错了,我用的是 sse 类型。

连接成功后,可以直接问问它能做什么。

试试效果。给他一个 burp 的官方靶场,存在 ssti 模板注入漏洞,这里可以直接让他使用 burp mcp 进行测试,我忘了说,他自己发现 Fetch 失败后,自动调用了 burp mcp。使用中会弹窗窗口确认是否可以进行发包测试,选择 allow 即可,或者在插件那里手动勾选和添加网址。

结果很成功

消耗不到 2 毛钱(冲了 10 块钱)

官方 mcp 可以做的事情

当然清楚!我当前连接的 burp-mcp 提供了以下功能,涵盖 Burp Suite 的多个模块:

 🔍 信息获取类

 ┌───────────────────────────────────┬─────────────────────────────────────┐
 │               工具                │                说明                 │
 ├───────────────────────────────────┼─────────────────────────────────────┤
 │ get_proxy_http_history            │ 获取代理 HTTP 历史记录              │
 ├───────────────────────────────────┼─────────────────────────────────────┤
 │ get_proxy_http_history_regex      │ 按正则表达式过滤代理 HTTP 历史      │
 ├───────────────────────────────────┼─────────────────────────────────────┤
 │ get_proxy_websocket_history       │ 获取代理 WebSocket 历史记录         │
 ├───────────────────────────────────┼─────────────────────────────────────┤
 │ get_proxy_websocket_history_regex │ 按正则过滤代理 WebSocket 历史       │
 ├───────────────────────────────────┼─────────────────────────────────────┤
 │ get_organizer_items               │ 获取 Organizer 中的项目             │
 ├───────────────────────────────────┼─────────────────────────────────────┤
 │ get_organizer_items_regex         │ 按正则过滤 Organizer 项目           │
 ├───────────────────────────────────┼─────────────────────────────────────┤
 │ get_scanner_issues                │ 获取扫描器发现的问题                │
 ├───────────────────────────────────┼─────────────────────────────────────┤
 │ get_active_editor_contents        │ 获取当前活跃编辑器内容              │
 ├───────────────────────────────────┼─────────────────────────────────────┤
 │ get_collaborator_interactions     │ 查询 Burp Collaborator 外带交互记录 │
 └───────────────────────────────────┴─────────────────────────────────────┘

 ✏️ 编辑/操作类

 ┌────────────────────────────────────────┬───────────────────────┐
 │                  工具                  │         说明          │
 ├────────────────────────────────────────┼───────────────────────┤
 │ set_active_editor_contents             │ 设置活跃编辑器内容    │
 ├────────────────────────────────────────┼───────────────────────┤
 │ set_proxy_intercept_state              │ 开启/关闭拦截功能     │
 ├────────────────────────────────────────┼───────────────────────┤
 │ set_task_execution_engine_state        │ 暂停/恢复任务执行引擎 │
 ├────────────────────────────────────────┼───────────────────────┤
 │ set_project_options / set_user_options │ 修改项目/用户级配置   │
 └────────────────────────────────────────┴───────────────────────┘

 📤 发送请求类

 ┌───────────────────────────┬───────────────────────────────┐
 │           工具            │             说明              │
 ├───────────────────────────┼───────────────────────────────┤
 │ send_http1_request        │ 发送 HTTP/1.1 请求并获取响应  │
 ├───────────────────────────┼───────────────────────────────┤
 │ send_http2_request        │ 发送 HTTP/2 请求并获取响应    │
 ├───────────────────────────┼───────────────────────────────┤
 │ send_to_intruder          │ 将请求发送到 Intruder 模块    │
 ├───────────────────────────┼───────────────────────────────┤
 │ create_repeater_tab       │ 创建 HTTP/1.1 Repeater 标签页 │
 ├───────────────────────────┼───────────────────────────────┤
 │ create_repeater_tab_http2 │ 创建 HTTP/2 Repeater 标签页   │
 └───────────────────────────┴───────────────────────────────┘

 🛠️ 工具类

 ┌──────────────────────────────────────────────┬────────────────────────────────────────────────────────────┐
 │                     工具                     │                            说明                            │
 ├──────────────────────────────────────────────┼────────────────────────────────────────────────────────────┤
 │ url_encode / url_decode                      │ URL 编解码                                                 │
 ├──────────────────────────────────────────────┼────────────────────────────────────────────────────────────┤
 │ base64_encode / base64_decode                │ Base64 编解码                                              │
 ├──────────────────────────────────────────────┼────────────────────────────────────────────────────────────┤
 │ generate_random_string                       │ 生成随机字符串                                             │
 ├──────────────────────────────────────────────┼────────────────────────────────────────────────────────────┤
 │ generate_collaborator_payload                │ 生成 Collaborator 外带 payload(用于 SSRF、XXE、盲注入等) │
 ├──────────────────────────────────────────────┼────────────────────────────────────────────────────────────┤
 │ output_project_options / output_user_options │ 导出当前配置(查看 schema)                                │
 └──────────────────────────────────────────────┴────────────────────────────────────────────────────────────┘

 ---
 总的来说,我可以用这些工具帮你做这些事情:
 - 被动分析:查看 Burp 的历史流量、扫描器问题、Organizer 中的项目
 - 主动测试:直接发送 HTTP 请求(支持 HTTP/1.1 和 HTTP/2),或创建 Repeater 标签页供你手动调试
 - 外带测试:生成 Collaborator payload 并查询回调结果(适合盲 SSRF、盲 XXE 等)
 - 自动化辅助:编解码、生成随机字符串、控制拦截开关和任务引擎