
搞Web安全测试的人应该没有不知道Burp Suite的。无论是刚入行的新人还是干了多年的老手只要涉及HTTP/HTTPS流量分析和接口安全验证几乎都绕不开它。我见过不少人把Burp下载下来装好证书成功抓了几个包然后就停在那里了——改包不知道怎么改重放不知道用来干嘛Intruder进去更是一头雾水。这套工具真正厉害的地方不是“能抓包”而是抓包、改包、重放、爆破这四个模块串起来之后形成的完整工作流。这篇文章我准备把这条工作流从头到尾拆开讲每一步为什么要这么做、关键配置怎么调、有哪些坑是我实际踩过的都一并写出来。内容主要面向两类人。第一类是刚接触Web安全测试的新手想系统搞明白Burp Suite的核心用法而不是停留在装好、能抓包的阶段。第二类是平时习惯用Fiddler、Charles这类工具做接口调试的开发者想从安全测试的视角重新理解代理工具掌握改包、重放、爆破这些更进阶的操作。整篇内容默认大家使用的是免费的社区版因为社区版对这四大核心功能的支持已经足够专业版主要在主动扫描和Intruder限速上做了区分不影响核心操作的学习。1. 整体设计思路为什么Burp Suite是Web安全测试的首选1.1 一台安装在本地端口上的“流量中转站”Burp Suite本质上是一个Java编写的本地代理工具启动后会在127.0.0.1:8080上开启一个监听端口。浏览器或者手机把流量转发到这个端口Burp再把流量发往目标服务器这样中间的所有请求和响应都能被我们看到、修改、拦截或者重新发送。打个比方普通浏览器访问网站是“快递员直接从商家送到客户手里”用了Burp之后所有包裹都要先经过一个中转站。在中转站里你可以拆开包裹看清楚里面装了什么可以换掉里面的内容再送出去也可以复制一份包裹反复派送还可以直接扣下不发。这种对流量完整的控制能力是浏览器F12开发者工具做不到的。F12只能让你“看”到浏览器自己发出的请求但你想改一个参数重新发给服务器或者对某个接口做批量测试F12就力不从心了。1.2 和其他抓包工具的定位差异很多新手会纠结“Fiddler、Charles、Wireshark、Burp到底选哪个”。我的看法是这些工具各有侧重没有绝对的优劣但明确它们的定位能帮你少走弯路。工具主要场景长项短板FiddlerWindows平台的开发调试界面直观脚本能力强适合前端排查问题安全测试自动化功能较弱CharlesmacOS和移动端开发调试移动端抓包方便弱网模拟好用改包和自动化方面不如BurpWireshark网络协议分析能看到TCP/UDP、TLS握手等底层细节对HTTP请求的修改和自动化基本无能为力Burp SuiteWeb安全测试抓包、改包、重放、爆破形成完整闭环学习曲线相对更陡如果只是调试接口、看看返回数据Fiddler和Charles完全够用。但如果要做越权验证、弱口令检测、接口参数枚举这类安全测试Burp的Repeater和Intruder模块几乎没有替代品。这就是为什么它被戏称为“渗透神器”在Web安全测试中的地位相当于“瑞士军刀”。1.3 四大模块如何形成测试闭环抓包、改包、重放、爆破这四个模块不是一个一个孤立的功能它们天然构成一条完整的测试链路。我用一个登录接口的测试场景来演示这条链路是怎样的抓包阶段先用Proxy模块捕获登录请求弄清楚前端到底提交了什么参数是用户名、密码还是还带了验证码、设备ID这些额外字段。改包阶段拦截这个请求把某个参数值改成异常数据观察服务器是否做了校验。比如把用户ID改成别人的ID看返回结果是不是越权了。重放阶段把修改后的请求发到Repeater反复发送验证这个请求是否可以被重复使用服务端有没有做防重放机制。爆破阶段如果登录接口没有验证码或者验证码可复用用Intruder对用户名、密码字段做批量枚举做一次弱口令检测。这个流程在实战中非常典型也是我日常测试中最高频的用法。很多人学Burp学成了“只点按钮不串链路”其实远没有发挥出它的价值。1.4 版本选择和环境准备Burp Suite分为社区版、专业版和企业版。社区版免费最大的限制是Intruder模块的并发请求被限速同时不能保存项目状态也没有主动扫描器。对于学习四大核心模块来说社区版完全够用。专业版是付费的多了自动化扫描、保存项目、更快的Intruder等功能适合日常工作需要大量测试的人。我的建议是新手先老老实实用社区版把流程跑通等真正理解每个模块是干什么的再考虑要不要为更快的速度和扫描能力付费。环境准备方面Burp Suite基于Java需要系统里有对应版本的JDK。官方安装包一般会自带运行环境下载后按提示安装即可。安装完成后启动默认界面就是Proxy面板下方Info提示Running on 127.0.0.1:8080这就说明本地代理已经就绪。2. 抓包篇让HTTP和HTTPS流量在你眼皮底下现出原形2.1 配置浏览器代理让流量自动走进BurpBurp启动后默认监听127.0.0.1:8080但这不代表浏览器会自动把流量送过来。你需要在浏览器里把HTTP和HTTPS代理都指向这个地址。Chrome用户我推荐装一个SwitchyOmega扩展可以一键切换代理模式比每次去系统设置里改方便得多。配置方式也简单在SwitchyOmega里新建一个代理情景模式协议选HTTP服务器填127.0.0.1端口填8080然后切到该模式即可。Firefox用户更直接在“设置 - 网络设置”里手动配置代理即可不需要任何扩展。这里有个细节容易被忽略Firefox默认对本地回环地址不走代理。如果你要抓的是本地服务比如http://localhost:8080需要在“不使用代理”的排除列表里把localhost、127.0.0.1这些地址删掉否则Burp里什么都看不到。移动端抓包也是同样原理。手机和电脑连同一个Wi-Fi把手机的代理IP指向电脑的局域网IP端口同样是8080。但要注意移动端抓HTTPS的证书配置更麻烦一些后面单独说。2.2 安装CA证书让HTTPS明文可见很多新手抓包失败都栽在HTTPS证书上。原理很简单HTTPS是加密传输Burp如果想在中间看到明文就必须在浏览器面前“冒充”目标服务器。Burp自己有一个CA根证书只要浏览器信任了它Burp就能为任意域名生成对应的证书从而解密流量。证书安装步骤并不复杂浏览器代理配置好之后访问http://burp页面上有CA Certificate按钮点击下载证书文件。打开证书文件选择安装到“受信任的根证书颁发机构”。完成后重启浏览器此时再访问HTTPS页面Burp里就能看到明文请求了。这里有一个Windows系统的坑我在工作中遇到不止一次下载下来的证书文件后缀如果不显眼系统会默认按.cer处理但安装向导里选的证书存储位置如果没有选对装完还是无效。务必要选“本地计算机”同时把信任区域选成“受信任的根证书颁发机构”两个条件缺一不可。Firefox比较特殊它不使用系统证书库而是自带一套独立证书库。所以在Firefox里除了系统安装之外还需要在“设置 - 隐私与安全 - 证书”里单独导入一次Burp证书。很多教程不讲这一点导致用户明明在Windows里装好了证书Firefox里仍然抓不到HTTPS。2.3 HTTP History的正确打开方式抓包数据默认展示在Proxy模块的HTTP History里这里会按时间顺序记录所有经过代理的请求。新手常犯的错误是盯着Intercept面板看以为只有那里有包。Intercept面板只是拦截窗口用来手动放行或修改请求的真正持续记录流量的地方是HTTP History。HTTP History面板里有几个关键列需要熟悉Host确定发送给哪个域名Method是请求方法Path是路径和参数Status是响应状态码Response Length是响应体长度。我自己的习惯是做完一轮抓包后先在Filter里把静态资源过滤掉只保留JS、CSS、图片之外的接口请求否则一堆静态资源会把真正的接口信号淹没掉。右键点击任意一条请求记录会弹出一个功能菜单里面包含了“Send to Repeater”、“Send to Intruder”等快捷入口。这就是后续重放和爆破的起点几乎所有的分析都从这里开始。2.4 抓不到包的高频原因抓包这件事说起来简单实际做起来问题层出不穷。这里我把自己踩过的、以及帮别人排查过的常见原因整理一下代理没配好或浏览器扩展冲突。用SwitchyOmega时如果同时开了系统代理或者其他代理插件会产生冲突。我遇到过几次浏览器设置里看代理地址是对的但流量根本没经过Burp最后发现是另一个扩展把流量劫持了。HTTS证书未安装或者装错了信任区域。装了但没选对位置是高频问题尤其是Windows系统。Chrome对localhost默认不走代理。访问本地服务时直接在浏览器地址栏输入http://127.0.0.1:端口在Burp里同样看不到需要调整代理插件对本地地址的处理规则。App做了证书固定或 SSL Pinning。这种情况多见于手机App即使安装了证书App内部仍然不信任非官方证书流量抓不到。解决方案要到App的调试版本或者允许证书固定的环境中处理这属于移动安全测试的进阶内容日常Web测试并不多见。抓包工具或系统代理在退出后设置了错误配置。Burp还开着但切换代理模式的扩展忘了切回“系统代理”后面访问网站就全都超时。3. 改包篇在请求到达服务器之前做点手脚3.1 拦截与转发的核心操作流程抓包是“看”改包是“动”这是本质区别。改包操作集中在Proxy模块的Intercept选项卡里。当Intercept处于开启状态Intercept is on时浏览器发出的请求会被拦截下来停在Burp的拦截窗口里。此时你可以随意修改请求行、请求头、请求体然后点击Forward放行请求才会继续发往服务器。点击Drop会把请求直接丢弃服务器什么都不会收到。需要注意的是Intercept拦截请求的默认开关是开启的。也就是说你启动Burp并配置好代理后第一次访问网站时请求会卡住页面一直转圈这就是被拦截了。很多人第一次用Burp以为软件坏了其实是Intercept在等着你按Forward。除了拦截请求Burp同样可以拦截响应。但要设置一下在Proxy Options里勾选“Intercept responses based on the following rules”响应才会被拦下来。改响应在调试前端逻辑时很有用比如某些页面元素是前端根据响应判断后才显示的你可以通过修改响应内容绕过这些判断。3.2 常见改包场景与测试思路改包到底能做什么我总结几个日常最常用的场景每个场景背后都是一类验证思路第一修改关键参数值验证服务端是否信任前端传参。比如某个接口通过user_id参数来判断用户身份你把user_id从自己的ID改成别人的如果返回的数据也跟着变成别人的说明接口存在越权访问风险。类似的还有商品价格、订单金额、优惠券编号这些字段改成异常值看响应有没有异常。这类问题在安全测试中非常常见但很多开发者自测时根本不会想到要去改这些值。第二修改请求头尝试绕过服务端校验逻辑。常见的操作包括加一个X-Forwarded-For: 127.0.0.1来模拟内网访问或者修改User-Agent来绕过某些环境检测还有修改Referer字段来尝试绕过来源校验。第三修改Cookie和Session。把Cookie里的会话标识替换成其他值看服务器是否还会正常响应。如果响应内容不受影响说明认证机制存在被绕过的可能。这个操作在新手阶段容易犯错误因为手动改Cookie时容易破坏它的格式导致服务器直接返回401。实际测试中我会先用Repeater验证正确格式的Cookie能通过再做替换测试。第四修改Content-Type。把表单提交的application/x-www-form-urlencoded改成application/json后端如果对内容格式处理不当会导致解析差异可能产生意料之外的逻辑。这是接口安全测试里比较进阶的技巧但操作本身很简单就是一个Header的修改。3.3 Match and Replace自动改包的神器人工拦截改包适合做精细验证但如果每次抓到的请求里都包含你不想看到的内容比如所有请求都带着一个渲染页面用的Header或者响应里每次都夹着大量压缩数据影响阅读你可以用Match and Replace功能做自动替换。设置路径在Proxy Options - Match and Replace。规则本质是“遇到匹配的内容就替换成指定内容”。我常用的规则是把Accept-Encoding请求头删掉这样服务器返回的响应就不会被gzip压缩Burp里直接看到原始文本分析起来方便得多。也有一些安全测试场景会用到自动替换。比如某个系统的所有请求都带有一个校验参数而这个参数的值可能是动态计算的你想跳过它的校验逻辑就可以用Match and Replace把这个参数的取值替换成固定值这样每一条经过Burp的请求都会被自动修改省去手工改包的重复劳动。3.4 改包操作的几个关键心得改包看着只是改几个字符串实际操作中踩坑的地方不少。我踩得最多的是Content-Length问题。修改请求体之后请求头里的Content-Length必须同步更新否则服务器按旧的长度读取请求体数据解析会乱掉返回400或者直接超时。Burp在多数情况下会自动重算Content-Length但如果你修改的方式比较特殊比如手动构造了重复的请求头Burp可能不会管这时候就需要自己手动更新。另一个经验是改包前先复制原始请求。很多人改到一半想回到最初的状态发现已经记不清原始内容是什么了。在拦截窗口里右键点击请求内容选“Copy to file”或者直接复制到剪贴板改乱了还能翻回来。还有一点一次只改一个变量。有些人为了“节省时间”一次改三个参数结果响应异常了也分不清到底是哪个改动导致的。测试是一个控变量的过程一次改一个看清影响再改下一个这样排查问题会快得多。4. 重放篇用Repeater把请求玩出花4.1 Repeater的基本使用方式Repeater是手工测试的利器。整个模块的界面非常简洁左边是请求编辑区右边是响应查看区。你可以在左边任意修改请求然后点一下Send右边的响应区就会展示服务器返回的内容。要把一个请求发到Repeater最快捷的方式是在HTTP History里找到目标请求右键选择“Send to Repeater”快捷键是CtrlR。到了Repeater之后请求已经被解析成了可编辑的结构化形式头部、参数、请求体都是分开展示的修改起来非常直观。Repeater还有一个容易被忽略的左边栏这里会显示你打开过的所有标签页。每一个标签页都对应一个独立的请求可以在它们之间快速切换对比。这个功能在测试多个接口或者一个接口的多种变体时极为好用。我经常把原始请求、修改参数后的请求、去掉某个Header后的请求分别放在不同的标签然后来回切换比较响应差异。4.2 Repeater的进阶操作和实用技巧Repeater不只是“改了发、发了看”这么简单。有几个技巧我在实际测试中几乎每次都用到第一个是“Change request method”按钮。在请求编辑区右键可以选择把GET改成POST或者把POST改成GET。这个功能在处理REST接口时很有用有些接口同时支持GET和POST但处理逻辑不一样切换方法后响应变化能暴露一些隐藏问题。第二个是Inspector面板。Repeater页面右侧除响应区外还有一个Inspector区域它会自动解析请求中的URL参数、Body参数、Cookie等并且支持直接编辑。更实用的是它对编码的处理选中一段URL编码的字符串Inspector能自动帮你解码成明文修改后再编码回去。这个功能在分析登录请求时尤其好使因为用户名密码通常都是经过URL编码提交的。第三个是响应对比。Burp自带Comparer模块可以把两个响应内容放在一起对比差异。日常测试中我会把一个请求的原始响应和修改参数后的响应分别保存下来用Comparer做diff这样一眼就能看出哪些返回内容受到了参数修改的影响。这个对比看起来简单但实际测试中非常高效比自己用眼睛逐行核对响应快得多。4.3 重放能验证哪些安全问题Repeater的核心用途是判断“同一个请求是否可以反复使用”以及“修改参数后响应如何变化”。这两个问题背后对应的安全问题各不相同。关于重放典型的验证场景是支付接口和短信验证码接口。一次订单支付请求拿到后重新发送一次如果订单状态没有变化或者重复扣款说明服务端没有做幂等控制。验证码接口的重放测试同理同一个验证码请求在验证通过后继续重放如果还能通过验证说明验证码是一次性使用的机制没有生效。这类问题在日常测试中非常高频也可以说是Repeater存在的最核心价值。关于参数修改后的响应变化典型场景是权限验证。接口返回某个业务数据你修改请求中的资源ID观察响应数据是否跟着变成了其他资源的内容。如果响应内容变了说明这个接口没有对资源归属做校验存在越权风险。这类问题我用Repeater测过很多次也是初学者最容易理解、最值得掌握的测试思路。4.4 Repeater与抓包改包的协同工作流我自己的高频率测试流程是这样的先在HTTP History里找到目标请求快速过一眼请求参数然后发送到Repeater。到Repeater之后先不做任何修改直接Send一次获取基准响应。这个基准响应非常重要后面所有的响应变化都要和它对比。接着逐步修改参数。先改业务ID看响应怎么变再改用户ID看响应怎么变再考虑删除某个Header看服务端是否对Header有强依赖。每做一次修改都会在Repeater的标签页里留下一条历史响应记录方便回溯。整个流程的操作并不复杂难在养成“先基准、再控变量、后对比”的测试习惯。很多人到了Repeater就乱改一通改完也不知道为什么这样改最后得出一个模棱两可的结论这是最可惜的。5. 爆破篇用Intruder做自动化枚举和批量验证5.1 Intruder的工作方式与道德边界Intruder翻译过来就叫“爆破”听上去很凶本质上就是一个自动化请求工具。它的输入是一个请求模板和一组Payload数据然后按照你指定的规则循环把Payload替换到模板的指定位置再发送给服务器。举个例子登录接口需要一个username参数你把该参数的位置标记出来然后准备一个用户名字典Intruder就会把字典里的每一个名字依次填入这个参数位置向服务器发送对应的登录请求。这个过程就是自动化枚举。在使用Intruder之前我必须说清楚一件事爆破能力只用于你自己拥有授权的目标比如你自己搭的靶场、公司分配的测试环境、或者合同中明确允许测试的系统。未经授权对生产系统做口令枚举测试既不专业也有法律风险。这篇文章里的所有内容都默认你是在授权环境下进行安全测试。这个边界感一定要立住这是整个安全行业的基本底线。5.2 四种攻击类型的适用场景Intruder提供了四种攻击类型很多人一上来就晕在这里。我用最简单的方式说清楚它们的区别和选择依据。攻击类型适用场景工作机制Sniper 狙击手单参数枚举多个Payload逐一替换标记位置每次只替换一个位置Battering Ram 攻城锤多位置共享同一值每个Payload同时替换所有标记位置所有位置值相同Pitchfork 草叉多参数按序组合多个Payload列表按行号对应同一行同时替换各位置Cluster Bomb 集束炸弹多参数笛卡尔积组合所有Payload列表做全组合产生大量请求Sniper用得最多比如单独枚举一批用户ID或者对密码字段做字典测试只需要标记一个参数位置即可。它的特点是精确每次只做一个位置的替换响应结果容易对应到具体参数分析时不会乱。Pitchfork适合用户名和密码需要“成对”出现的场景比如测试内置账号每个账号对应一个默认密码用两个字典按行对应着填入效率和正确率都很好。Cluster Bomb是组合枚举比如同时枚举订单号和用户ID想把两个参数的所有组合都跑一遍使用Cluster Bomb。代价是请求数量会呈乘积式暴涨如果两个字典各有一万条组合数就是一亿这个量级在测试中基本不可行。所以用Cluster Bomb之前一定要先评估请求总量控制字典规模。5.3 标记Payload位置和字典构造Intruder的Positions页面就是做标记的地方。在请求编辑区选中参数值点击Add §按钮就会在参数两端加上标记符号。Burp只会替换标记符号范围内的内容标记之外的部分原样发送。这里有三个常见的坑。第一个是把Content-Length标记进去了这个头一改服务器直接解析错乱。第二个是把Host标记进去了这会导致请求发错目标。第三个是标记了URL里不需要改的点比如静态资源路径纯属浪费请求数。我的经验是Intruder请求模板里只标记业务参数请求头一概不动。Payload的来源有几种方式。Simple list是手工粘贴或输入一组值适合小规模测试。Runtime file是从外部字典文件加载适合大量数据。Brute Force Forcer是Burp内置的暴力生成器可以指定字符集和长度范围生成所有排列组合适合枚举四位验证码。Numbers可以生成连续的数字序列适合订单号、身份证等数字型参数的遍历。关于字典我不建议新手一上来就到处找几百兆的大字典。测试弱口令先准备一份几十条的常见弱密码列表就够用了。关键是字典要贴合目标场景比如目标是内部管理系统密码通常会包含年份和特殊符号的组合这时候字典要更偏向白领常用的口令习惯。字典质量直接影响测试效果再好的工具配一个烂字典也是白搭。5.4 Options配置和结果分析Intruder跑起来之后请求速度很快但配置不当会导致两个问题一是目标服务器被打挂二是大量超时请求淹没真正有价值的结果。在Resources或者Options里首先要控制并发数。社区版的Intruder本身有限速所以问题不大但专业版如果不设限制一口气几百个并发发出去目标服务器很有可能会响应超时甚至宕机。我的建议是从低并发开始最多不要超过10到20个并发同时可以在Throttle里设置一个请求间隔比如几百毫秒这样既能稳定跑完测试也不会对目标造成太大压力。Options里的Grep-Match是一个非常好的辅助工具。你可以在这里配置一些关键字Burp会把每个响应中是否包含该关键字标记在结果列表里比如登录接口里“登录成功”和“密码错误”这两个关键字。这样每个响应返回后Burp会自动帮你判断它是成功还是失败不用逐条打开看内容。结果分析主要关注三列Status、Length、Time。Length是最常用的如果某个请求的响应长度明显偏离平均值大概率这个请求走了不同的逻辑分支。比如大部分响应长度是2000突然有一个响应长度是5000那这个请求很可能捞到了额外的数据值得手工验证。Time也能提供线索某些接口在处理特定数据时会因为查询量大而变慢响应时间异常往往暗示资源访问上的差异。5.5 一次完整的弱口令检测实操流程我以一个本地搭建的测试系统为例把Intruder的完整操作流程串一遍第一步配置好代理后在登录页面输入一个测试账号和任意密码提交一次登录请求。第二步在Proxy的HTTP History中找到这个登录请求右键发送到Intruder。第三步在Intruder的Positions页面中清除所有默认标记然后只对用户名和密码参数的取值添加§标记。第四步攻击类型选Pitchfork因为我们要按账号和密码的对应关系同时替换两个位置。第五步在Payloads页面中为第一个位置用户名加载测试账号字典为第二个位置密码加载对应的密码字典。两个字典按行对应。第六步在Options里设置Grep-Match添加“登录成功”和“密码错误”两个关键字。第七步点击Start Attack开始测试。测试完成后可以在结果窗口中直接看到每条请求的响应长度和Grep-Match结果。如果某一条请求的响应里出现了“登录成功”关键字它的身份就非常可疑了。再到Repeater里手工验证一次确认这个账号和密码确实有效整个测试闭环就完成了。6. 常见问题速查与踩坑心得6.1 高频问题与解决思路速查表现象大概率原因解决思路浏览器可以上网但Burp里一条记录都没有代理没生效或代理插件冲突检查代理设置是否指向127.0.0.1:8080逐个关闭其他代理扩展HTPS页面完全打不开或提示证书错误证书未安装或未信任重新安装证书确认安装到受信任的根证书颁发机构本地接口抓不到包Chrome默认绕过localhost代理改用代理插件强制代理所有地址或直接把localhost从排除列表去掉请求被拦截后一直转圈Intercept开启中等待手动处理在Proxy面板点击Forward放行或暂时关闭Intercept开关修改请求体后返回400Content-Length没有同步更新手动修正Content-Length或让Burp重新计算该值Repeater发送后响应区没有内容目标服务器超时或请求被拒绝检查请求头是否完整目标是否可达适当缩短请求体Intruder跑完结果全是超时并发过高打进请求队列降低并发增加延迟减少字典规模Intruder结果里长度全一样目标对参数做了统一处理或请求被拦截查看响应内容确认考虑更换测试参数或调整Grep-Match手机端抓不到HTTPSAndroid系统证书信任机制限制按官方文档把证书安装到系统证书目录或使用可调试的测试环境6.2 我踩过的几个比较深的坑第一个坑是开着全局代理忘关了。测试做完Burp正常关闭了但系统代理还指向8080端口然后浏览器所有页面都打不开第一反应是网断了折腾半天才发现是代理残留。后来我的习惯是使用代理模式切换工具时测试结束立刻切回直连模式。第二个坑是修改请求后忽略了Content-Length。之前测试一个下单接口改完请求体点了Send服务器返回400排查了很久才发现是改了请求体长度但Header里的长度值没有同步。自从有一次被这个坑折磨之后我现在每次改完请求体都会下意识检查一下Content-Length。第三个坑是Intruder的请求模板里标了Content-Length。当时标记参数时手快把整个Header也选中了结果每发一个请求长度都变了服务器返回大量错误整个测试结果基本作废。后来我固定了一个习惯Intruder模板里除了业务参数其他一概不标。第四个坑是使用超大字典跑Cluster Bomb。两个字典各一万条组合起来一亿个请求目标服务器直接被流量打满最后不得不在防火墙层面紧急封禁。这个教训比较深刻从那之后我使用Cluster Bomb前一定会先预估组合数控制数量级再跑。6.3 测试现场的几个好习惯根据我个人的经验有几件事固定在测试前、测试中和测试后都要做。测试开始前先在Repeater里发送一次原始请求确认目标接口可达、默认响应正常。有时候代理配置、证书安装已经影响到网络测试前不先验证后面所有的测试结果都不可信。测试过程中每次修改配置或者切换模块前记住当前的操作位置。比如Intruder正在跑测试就不要再切到Proxy去抓包否则会产生大量的额外流量干扰目标服务。如果Intruder已经跑完不要急着关闭窗口先把结果窗口里的响应数据导出避免后面想分析时找不到。测试结束后恢复所有环境配置。关闭系统代理、退出Burp、清理浏览器缓存确保网络环境回归正常。这一点在我个人经验里是被验证过很多次的很多测试后的线上事故追根究底都是代理配置没有清理干净导致的。6.4 后续还能怎么扩展把这四板斧练熟之后Burp的扩展生态也值得关注。BApp Store里有大量现成的插件比如Autorize可以自动检测越权漏洞Logger可以记录所有请求日志这些都是从“会用”到“用得顺手”的进阶方向。我个人的体会是Burp Suite这四板斧真正用熟练之后绝大多数接口层面的安全测试工作都能覆盖到八九成。抓包是基础改包是动作重放是验证爆破是批量。很多人一上来就急着玩Intruder反而忽略了前面的基础结果爆破跑完了连响应都分析不明白。我最常用的顺序一直是从HTTP History里慢慢找请求先手工改一遍理解参数再上自动化。这套流程跑顺之后遇到再复杂的接口心里都有底。