简介:这是一款Burpsuite工具安装包,面向Web安全测试人员与渗透测试入门者,整合主程序、运行依赖与启动环境,解决下载后因组件缺失而无法运行的常见问题。压缩包共415个文件,体积约173.94MB,其中dll链接库用于支撑底层运行、pak资源包存放界面与样式、jar核心库提供功能实现、exe文件负责程序启动,并附带license授权说明、md文档及配置文件,各类型用途清晰。目前已有978人学习下载,实用性经过较多用户检验。打开安装包即可获得一套完整的Burpsuite运行环境,省去手动配置Java依赖的繁琐步骤,快速进入抓包、爆破、漏洞检测等实际测试环节,对刚接触安全工具配置的新手尤其友好。
1. Burpsuite 安装包:为什么装上之后,第一步抓包就可能卡住
Burpsuite 安装包本身并不大,但“装完就能用”在它身上不成立。我见过不少同事把安装包下载好、下一步点完,打开后却收不到任何浏览器请求,或者 HTTPS 页面直接红屏,最后只能卸载重装,问题依旧。原因通常不在安装包本身,而在安装前没确认 Java 版本,安装后没把代理链路和证书链路理清。这篇文章围绕 Burpsuite 安装包的实际落地展开,从环境选型、启动参数、代理配置到证书安装,按我自己的操作顺序写一遍,适合刚接触抓包工具、想在本地把环境跑通的新手,也适合被各种“装好了但不通”问题困扰的熟手。先说明一点:这里只讲社区版和合规授权范围内的使用,专业版许可请走官方渠道,破解、激活这类操作不在讨论范围内。
2. 安装前的环境准备:JDK 版本、安装包形态与下载核对清单
2.1 先定 Java 版本:JDK 17 还是 JDK 8
Burpsuite 是从 Java 生态长出来的工具,安装包本质上是一个可执行的 JAR 壳子,外面再包一层启动器。所以 Java 环境不对,后面所有操作都是白搭。当前官方主流版本要求 JDK 17 或更高,老版本常见的是 JDK 8 和 JDK 11。我踩过最典型的坑是:电脑里装着 JDK 8,双击新版 Burp 安装包后右下角闪一下图标就没了,命令行启动才看到UnsupportedClassVersionError。这就是编译版本和运行版本不匹配,新版工具类文件用高版本 JDK 编译,老 JRE 读不了。
安装前先用命令确认当前默认 Java 版本:
java -version echo $JAVA_HOME看输出的第一行,如果是openjdk version "1.8.x",说明默认跑在 JDK 8 上。再看JAVA_HOME是否指向 JDK 17 的安装目录。这两条命令输出的信息要对应上,否则后续启动用的可能是 PATH 里先命中那个版本。
我一般会直接装 JDK 17,原因有两个:一是 Burp 新版官方文档明确以 Java 17 为基准;二是后续装扩展插件时,很多第三方扩展也按 17 编译,JDK 8 环境容易触发兼容性报错。如果你因为老项目必须保留 JDK 8,常见做法是安装 JDK 17 后手动改JAVA_HOME指向 17,启动 Burp 用独立的启动脚本写好环境变量,不要依赖全局配置。
2.2 安装包形态差异:安装版、绿色版和 Kali 自带版
网上能搜到三种形态:Windows 下的 exe 安装版、跨平台的 sh 启动脚本版、Kali 里直接 apt 装的社区版。实际用起来差别不小。
exe 安装版最省事,双击后选择安装目录,程序会自动写入注册表启动项和文件关联。它的缺点是卸载时容易残留用户目录下的配置缓存,重装后老配置还在,反而掩盖了新版本的变更。绿色版(或者叫便携版)是解压后直接运行 jar 或对应平台的启动脚本,好处是不污染系统,适合放在 U 盘里换机器用;坏处是首次启动要自己确认 Java 环境,文件路径里有中文或空格时启动脚本会翻车。Kali 自带版适合做渗透测试的临时环境,但它默认锁定在官方源里的固定版本,可能不是最新,且自带版对系统代理的改动权限更高,和同机其他工具抢端口时更隐蔽。
三种形态选哪种,取决于你的使用场景。只在本机做接口调试和安全测试,选 exe 安装版;要随身带、经常换机器,选绿色版;已经有 Kali 虚拟机、只是顺手抓包,直接用自带版加burpsuite命令启动即可。不用在这件事上纠结太久,形态不影响抓包核心功能。
2.3 下载前核对清单:版本号和文件校验
下载安装包前先做三件事,能省掉后面大部分环境问题。
第一,确认版本号和 JDK 的对应关系。新版 Burp 要求 Java 17+,如果你机器上只有 JDK 8,那就下载对应的旧版 Burp,而不是硬装新版。第二,核对文件的 SHA-256 哈希,官方下载页一般会给出校验值,下载完用本地工具算一下,能过滤掉被篡改的安装包。Windows 下用 PowerShell 校验:
Get-FileHash .\burpsuite_community_windows_x64.exe -Algorithm SHA256输出的一长串十六进制字符串要和官方页面上的值完全一致。哈希对不上,安装包就不要继续用了。第三,看下载文件名里的x64或arm64后缀。Apple 芯片的 Mac 和部分 ARM 架构的设备选通用版或 arm64 版,选错架构会在启动阶段直接报Exec format error,这个错和 Java 无关,是系统层面跑不起这个文件。
核对完这三项,安装包这件事就稳了一大半。接下来真正花时间的,是启动和代理链路的配置。
3. 首启与代理链路:让 Burpsuite 真正接管浏览器流量
3.1 启动参数和 JVM 内存设置
Burp 默认启动脚本会给 JVM 分配一定内存,社区版默认值在低配机器上够用,但项目请求量大、开了多个扩展后,OOM 会以“界面卡死、点什么都无响应”的形式出现,并不总是弹错误框。我一般会在启动脚本里显式指定内存上限,Windows 下常见的启动方式是这样的:
java -Xmx2g -XX:+UseG1GC -jar burpsuite_community.jar-Xmx2g表示 JVM 堆最大 2 GB,按机器内存实际情况调,8 GB 内存的机器给 2g,16 GB 的给 4g 都正常。-XX:+UseG1GC是垃圾回收器,G1 在长驻界面类应用里延迟表现比默认的 ParallelGC 更稳。最后是-jar指定 JAR 包路径,路径中有空格时整个命令要用双引号包住路径。
逻辑说明:Burp 的图形界面和代理服务跑在同一个 JVM 里,堆大小直接决定它能缓存多少请求记录和响应体。开抓包后历史记录默认全放内存,抓了几千个请求再看 Proxy History,卡顿感会很明显,这时候内存上限的作用就体现出来了。参数按需改,不要盲目给-Xmx8g,堆过大反而会造成 GC 停顿变长。
3.2 浏览器代理配置:一次配好 HTTP 和 HTTPS
Burp 默认监听127.0.0.1:8080,这是它内置代理的默认端点。安装好后第一步是从 Burp 的 Proxy 选项卡里确认监听地址和端口,然后让浏览器的流量走这个代理。Firefox 和 Chrome 的配置方式不太一样。
Firefox 在“设置—网络设置—手动配置代理”里填 HTTP 代理为127.0.0.1,端口8080,并且勾选“也将此代理用于 HTTPS”。Chrome 不读浏览器内部的代理设置,它走系统代理,所以要改操作系统的代理设置:Windows 在“设置—网络和 Internet—代理”里开手动代理,填同样的地址和端口。
这里有个细节容易误导新手:在 Chrome 里配完系统代理后,访问http://example.com能看到 Burp 里的请求,但访问大部分 HTTPS 站点会直接报证书错误。这是预期现象,不是配置错了,必须等第 4 章的证书装好后再测 HTTPS。为了验证链路,先访问一个 HTTP 站点即可,比如http://neverssl.com,它能保证不走 HTTPS 也不跳转。
3.3 判断链路已通的三个信号
代理配完,如何确定 Burp 真的接管了流量,而不是浏览器在直连?看三个信号。
第一个信号是 Burp 的 Proxy History 里出现新请求条目,这是最直接的证据。第二个信号是浏览器访问 HTTP 站点时出现“代理服务器拒绝连接”的瞬间报错——如果 Burp 没启动,浏览器会快十倍地报错,这个“变慢”和“报错”本身就是流量经过代理的旁证。第三个信号是 Burp 右上角的日志计数在跳动。
这三个信号里第一个最可靠。我每次配完代理,都会在浏览器里强制刷新一个页面,然后回到 Burp 的 HTTP History 面板看时间戳最新的那条记录。如果记录里的目标 IP 和端口和你访问的站点对得上,链路就通了,接下来才有资格谈抓 HTTPS 包。
4. HTTPS 证书安装:桌面端、模拟器与真机一次理清
4.1 证书导出与导入桌面端
Burp 能解密 HTTPS 流量的原理,是让自己成为浏览器信任的根证书颁发机构。浏览器和 Burp 建立 SSL 连接时,Burp 出示自己签名的证书,浏览器要认这个签名,就必须先把 Burp 的 CA 证书装进系统信任区。这一步不做,抓 HTTPS 永远是红屏。
导出证书的路径是固定的:配置好代理后,浏览器访问http://burp,页面会显示欢迎页,右上角有CA Certificate下载按钮,下载得到cacert.der文件。Windows 下导入证书的常见做法是双击该文件,选择“安装证书”,存储位置选“本地计算机”,然后手动把证书放进“受信任的根证书颁发机构”:
certutil -addstore -f Root .\cacert.dercertutil是 Windows 自带的证书管理命令,-addstore表示添加进指定存储区,Root是受信任根证书存储区的名字,-f是强制覆盖同名证书。命令跑完会输出“CertUtil: -addstore 命令成功完成”之类的提示。
逻辑说明:手工双击导入时,很多人卡在“是否信任该证书”的弹窗上,这里要选择“是”。有过一次误点“否”的,证书就会被标记为不信任,后面重新导入也会被忽略。所以直接使用命令行方式能避开弹窗的不确定性,适合批量部署或在多台机器上重复操作。
4.2 模拟器与真机上的证书差异
Android 模拟器和真机的证书安装比桌面端多一步,原因是 Android 系统区分“用户证书”和“系统证书”。Burp 默认装进去的是用户证书,对大多数 App 有效,但部分 App 只信任系统证书,导致 Burp 能抓到网页流量却抓不到 App 流量。
模拟器上的常见做法是把证书转成 PEM 格式后放进系统证书目录。转换命令如下:
openssl x509 -inform DER -in cacert.der -out cacert.pem mv cacert.pem 9a5ba575.0 adb root adb remount adb push 9a5ba575.0 /system/etc/security/cacerts/ adb shell chmod 644 /system/etc/security/cacerts/9a5ba575.0第一行把 DER 格式转成 PEM;第二行把文件重命名成系统证书要求的哈希文件名,9a5ba575是openssl x509 -subject_hash_old算出来的旧版哈希,不同版本的 Burp CA 算出来不一样,要自己算一次。后面三行是把证书推进系统目录并给读权限。
参数说明:subject_hash_old是 Android 旧版系统识别证书的命名规则,新版 Android 用的哈希算法不同,但模拟器大多是 Android 9 到 13,兼容性最好的还是旧版哈希。真机上做这步需要 root,没有 root 的设备只能装用户证书,遇到不信任用户证书的 App,那就得放弃抓它的 HTTPS 明文内容,改用其他方案。
4.3 证书装完仍然报错的常见表现
证书装完并不代表 HTTPS 全通。最常见的表现是:浏览器里访问站点,地址栏锁头图标变红,Burp 里能看到 TLS 握手失败的错误记录。
原因通常是“证书链不完整”。Burp 导出的 CA 只有根证书,某些网站证书链里带了中间证书,浏览器需要完整的信任链才能验证。解决方式是回到http://burp页面,在设置里把Use custom CA重新生成一次,再导出并导入新的 CA 证书。另一种表现是装完后浏览器提示“证书日期无效”,这通常是设备系统时间不对,Burp 签发的证书有效期是以它自己签发时刻为基准的,设备时间偏离太多就会判定过期。先对时,再重新走一遍导出导入流程,不要反复重装软件。
5. 避坑排查:安装和抓包的 6 个高频问题
5.1 现象:双击启动图标后界面闪一下就没,终端无任何错误
- 原因:JAVA_HOME 指向的版本过低,或 JAR 包路径包含中文/特殊字符。
- 解决:命令行直接执行
java -version和echo %JAVA_HOME%,确认环境变量;再用java -Xmx2g -jar "D:\tools\burpsuite_community.jar"形式启动,让报错信息留在终端窗口里。看到UnsupportedClassVersionError就是 JDK 版本问题,看到Unable to access jarfile就是路径问题。
5.2 现象:浏览器能上网,但 Burp 的 Proxy History 里一条记录都没有
- 原因:浏览器实际走的是直连,代理设置没有真正生效,或者代理端口写错。
- 解决:先在 Firefox 里手动指定代理并访问
http://neverssl.com,确认 HTTP 请求能进 Burp;如果 Firefox 可以但 Chrome 不行,说明系统代理没生效,去操作系统“代理设置”里重新填写127.0.0.1:8080。再不行就检查 Burp 的 Proxy listeners 面板,确认监听状态是Running。
5.3 现象:证书按流程导入,浏览器访问 HTTPS 仍提示“您的连接不是私密连接”
- 原因:证书导入的是当前用户存储区,而浏览器读取的是本地计算机存储区。
- 解决:用管理员权限重新执行
certutil -addstore -f Root cacert.der,导入到系统级 Root 存储区;导入后到certmgr.msc里找到“受信任的根证书颁发机构”,确认证书存在且不在“不信任的证书”列表里。
5.4 现象:手机配置代理后连不上,提示“连接到代理服务器失败”
- 原因:手机和电脑不在同一网段,或者电脑防火墙拦了 8080 端口。
- 解决:手机连和电脑同一个 Wi-Fi,电脑用
ipconfig查局域网 IP,手机代理地址填该 IP 而不是127.0.0.1。防火墙放行 Java 的入站规则,或者临时关掉防火墙测试一次。我一般会先 ping 通电脑 IP,再谈代理。
5.5 现象:请求和响应里的中文全部是乱码
- 原因:Burp 默认按 ISO-8859-1 解码,没有按响应头的
Content-Type里的charset处理。 - 解决:在 Burp 的 Display 设置里把字符集改成 UTF-8;如果改了还不行,用 Repeater 发送请求时手动在响应头补
Content-Type: text/html; charset=utf-8再发一次,常见做法是把显示编码交给 Burp 自动检测。
5.6 现象:配完代理后浏览器连 HTTP 网站都打不开,提示代理错误
- 原因:Burp 关闭后浏览器系统代理没有还原,系统还在往一个不存在的端口转发流量。
- 解决:关闭 Burp 前先关闭浏览器代理设置里的手动代理开关;如果已经关了,去系统设置里关掉代理,再把浏览器重启。从那以后我每次用完 Burp,都是先关代理再退出程序,免得下次打开浏览器一脸懵。
6. 安装后的环境验证与进阶用法:OCR 识别与启动脚本
6.1 用自测请求验证代理与证书
环境装好后,用一个受控的请求验证全链路,比直接抓真实业务更稳妥。我每次换机器或重装后,会先在 Repeater 里手动构造一个请求:
GET / HTTP/1.1 Host: example.com Connection: close发送后看响应状态码是否为 200,再看响应体里是否出现页面标题。这个请求走的是 Repeater 的直连逻辑,不依赖浏览器代理,能验证的是 Burp 自身出站链路。要验证浏览器代理和证书,就用浏览器访问https://example.com,确认地址栏小锁正常、Burp HTTP History 里记录的目标是example.com:443。两步都通过,环境才算真正跑通。
6.2 JSON 验证码识别的落地思路
搜“Burp JSON 验证码识别”的人,实际需求通常是在 Repeater 或 Intruder 里拿到接口返回的 Base64 图片验证码,转成明文后自动填入后续请求。这个功能不靠 Burp 内置能力,要靠扩展脚本。常见做法是写一个 Python 扩展,拦截响应里的 JSON 字段,提取验证码图片的 Base64 数据,送进 OCR 引擎识别后存到全局变量。
核心代码如下:
import base64 from burp import IBurpExtender, IHttpListener class BurpExtender(IBurpExtender, IHttpListener): def registerExtenderCallbacks(self, callbacks): self._callbacks = callbacks self._helpers = callbacks.getHelpers() callbacks.setExtensionName("JSON Captcha OCR") callbacks.registerHttpListener(self) print("[*] JSON Captcha OCR loaded") def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo): if messageIsRequest: return response = messageInfo.getResponse() body = self._helpers.bytesToString(response) if '"captcha"' in body: start = body.find('"captcha"') + len('"captcha":"') end = body.find('"', start) b64data = body[start:end] img_bytes = base64.b64decode(b64data) # 这里接 ddddocr 或 tesseract 等 OCR 引擎 # code = ocr(img_bytes) print("[*] captcha extracted, image size:", len(img_bytes))代码逻辑:processHttpMessage是所有 HTTP 流量的必经回调,判断是否为响应后,从响应体里找captcha字段,用字符串切片取出 Base64 数据,再解码成图片字节流交给 OCR 引擎识别。参数说明:find的起止位置依赖 JSON 字段格式,不同项目的字段名不一样,实际使用时要把"captcha"换成目标接口的真实字段名,并且处理base64里可能包含\转义符的情况,否则切片会切歪。
这属于扩展开发里的入门级写法,跑通后可以继续扩展:把识别结果通过callbacks.addToSiteMap写进站点记录,或者配合 Intruder 的 payload processor 自动替换。识别率取决于验证码本身的复杂度,纯数字无干扰的验证码用ddddocr默认模型就能到 90% 以上;带扭曲和噪点的要先做灰度化二值化。别期待一个脚本通杀所有验证码。
6.3 把常用配置固化进启动脚本
环境验证通过后,我会把启动和代理配置写成一个固定脚本,避免每次手动输入命令或忘配参数。Windows 下我习惯用start_burp.bat:
@echo off set JAVA_HOME=C:\Program Files\Java\jdk-17 set PATH=%JAVA_HOME%\bin;%PATH% cd /d D:\tools\burpsuite start java -Xmx2g -XX:+UseG1GC -jar burpsuite_community.jar脚本前三行把 JDK 17 的环境变量写到当前进程,不污染全局;cd /d切到 JAR 包所在目录,解决相对路径问题;最后一行的start让 Burp 在新窗口运行,关闭命令行窗口不影响程序。从那次因JAVA_HOME不匹配导致启动闪退后,我就强制自己的每台机器都走这种独立启动脚本方式,不依赖全局环境变量,重装系统后恢复环境也只需要把脚本里的路径改成实际安装位置。希望这篇踩坑笔记能帮你把安装到抓包这个过程一次走通,少花那些我当年花过的冤枉时间。
本文还有配套的精品资源,点击获取