资讯动态

BurpSuite Intruder密码爆破实战:抓包、配置与结果研判全流程

发布时间:2026/10/17 1:31:31 来源:尧图企业网站定制
1. 场景与定位为什么选择BurpSuite做密码测试做Web安全测试的人手头可以没有专业检测平台但很少有人会不装一套BurpSuite。原因不复杂它把拦截请求、修改报文、重放数据、爆破账号这一整条链路都串在了一个图形界面里尤其是Intruder模块做密码碰撞测试几乎是量身定制的。我最早接触密码爆破用的是命令行工具写脚本循环发请求遇到验证码或者请求带签名就傻眼每次都要手动分析报文结构效率极其低下。后来切到BurpSuite配合浏览器代理把登录请求完整抓下来设置好爆破位置和一个字典剩下的交给Intruder跑就行还能直接把结果按响应长度排序哪个账号密码组合是成功的一眼就能看出来。很多人对BurpSuite的认知只停留在“抓包工具”这个层面实际上它的定位是一个完整的Web安全测试平台。从流量代理、报文修改、重放测试到自动化爆破再到Decoder编码解码、Comparer响应对比工具链非常完整。我接下来要展开讲的是里面最常用也最容易被用砸的一个功能利用Intruder做密码爆破从抓包开始的完整配置流程以及我在实际测试里踩过的坑和总结出来的经验。这篇文章适合谁看一类是做安全工作没多久的新人需要快速掌握密码测试的标准操作另一类是有一定基础、但爆破成功率一直上不去的测试人员。不管你是哪种按照下面的流程走一遍基本的密码碰撞测试都能做到又稳又准。另外提醒一句所有测试操作只应在获得书面授权的系统中进行不要拿这套流程去碰任何你无权测试的目标这是底线。2. 前期准备抓住一次标准的登录请求爆破的本质是先拿到一个真实的、完整的登录请求然后在这个请求的基础上做参数替换和循环发送。所以第一步不是急着开Intruder而是先把请求抓干净。2.1 环境配置与代理连通BurpSuite默认监听本地127.0.0.1的8080端口浏览器需要把HTTP和HTTPS的代理指向这个地址。配置好代理后还有一个非常关键的环节安装并信任BurpSuite的CA证书否则所有HTTPS站点都会报证书错误请求根本发不出去。证书的安装路径根据浏览器不同有差异但核心就三步导出BurpSuite的DER格式证书导入到系统或浏览器的受信任根证书列表然后重启浏览器。做完这一步访问任意HTTPS站点BurpSuite里就能看到完整的明文请求了。我通常还会在代理设置里把“拦截开关”先关掉也就是不开启拦截状态让流量先顺畅地流过去然后在HTTP History面板里慢慢翻找登录请求。直接开着拦截模式去操作登录很容易把日常浏览请求也拦截下来反而干扰视线。正确的做法是把流量先放进来再按域名和URL筛选精准定位到登录接口。2.2 抓取登录请求的关键技巧打开目标系统的登录页面输入一组测试账号密码点击登录然后回到BurpSuite的HTTP History按请求方法过滤找到POST类型的登录请求。如果History内容太多可以直接在Filter栏里填入目标域名把无关流量全部滤掉。一个标准的登录请求通常长这样POST /api/login HTTP/1.1 Host: target.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Content-Type: application/json {username:admin,password:123456}也有不少系统用的是表单提交格式POST /api/login HTTP/1.1 Host: target.example.com Content-Type: application/x-www-form-urlencoded usernameadminpassword123456无论哪种格式爆破的核心思路都一样把密码对应的参数值标记成变量让Intruder循环替换并发送请求。这里有几个容易忽略的细节。第一请求头里如果有动态变化的字段比如自定义的请求ID、时间戳爆破时这些字段也可能需要同步替换否则后端校验直接拒绝。第二部分系统会要求请求头里携带特定的Token这个Token如果不变还好如果每次请求都变就说明系统做了额外的防护爆破难度会上升。第三登录成功和失败返回的状态码不一定有差异有些系统无论账号密码是否正确都返回200这时候靠状态码判断根本没用必须看响应体的内容特征或者长度。2.3 右键发送到Intruder的标准操作在HTTP History里找到目标登录请求后右键选择“Send to Intruder”快捷键CtrlI请求就会自动进入Intruder模块。这个操作是后面所有流程的起点务必确认请求内容完整不要漏掉请求头或请求体。请求进入Intruder后BurpSuite会自动帮你识别出可能需要进行爆破的参数并用高亮标注。但它有时候会把Cookie里的一串长参数也识别成候选位置这些不是我们需要爆破的直接删掉只保留真正要替换的参数位置即可。到这一步整个前期准备就算完成了。接下来要做的是把爆破位置、Payload类型、资源池和结果判断规则一一配置好这样才能保证跑出来的结果准确率足够高。3. 核心配置Attack Type、Payload与运行时设置Intruder模块的配置看起来选项很多真正需要关心的其实就四个维度攻击类型、Payload来源、请求发送速率以及结果判定方式。把这四块吃透密码爆破就成功了一大半。3.1 攻击类型选型Sniper、Battering Ram、Pitchfork、Cluster BombBurpSuite的Intruder提供了四种攻击类型大多数人只会用默认的Sniper实际这是不够的。搞清楚这四种类型的差异才能在不同场景下做出正确选择。Sniper狙击手只能设置一个爆破位置BurpSuite会用字典逐个替换这个位置。如果设置了两个有效位置它也只会依次替换每次只动一个位置。适合单纯爆破密码、爆破用户名或者测试某个参数是否存在越权。请求发送量等于字典条目数效率较高。Battering Ram撞锤使用同一个Payload同时替换所有标记的位置。适合多个位置共用一套值的情况比如用户名和密码都填同一个字符串这在测试某些弱口令策略时有用。Pitchfork草叉每个位置绑定一个独立的字典多个位置同步替换第一个位置取字典第一行时第二个位置也取自己的第一行行数一一对应。适合已知用户名列表、需要批量匹配对应密码的场景比如账号和初始密码成对出现的情况。Cluster Bomb集束炸弹每个位置独立遍历字典笛卡尔积组合。适合多参数交叉测试比如爆破用户名和密码的组合。缺陷也很明显请求量会呈指数级增长两个位置各有1000条字典就要发送100万次请求对目标系统压力极大慎用。我在实际项目中最常用的组合是爆破单密码时用Sniper爆破账号密码组合时用Cluster Bomb但会把字典数量控制在小范围内。如果目标是测试一批账号是否存在统一弱口令Pitchfork效率会远高于Cluster Bomb。3.2 Payload配置字典从哪里来Payload是爆破过程中实际替换到请求里的值可以来自内置字典、外部字典文件也可以使用BurpSuite的Payload生成规则。这个环节决定了爆破的覆盖面字典质量直接决定爆破成功率。如果是快速验证直接在Payload Options里粘贴一组常见弱口令即可。比如admin 123456 password admin123 12345678 qwerty test如果系统对密码有复杂度要求比如必须包含大写字母、小写字母和数字简单字典肯定不够用。我通常会准备一个核心字典里面包含常见密码变体规则。BurpSuite本身支持自定义Payload规则可以配置一个前缀加数字递增的组合比如生成admin01到admin99这样的序列。外部字典的选择上我一般会根据目标系统的语言环境和业务类型来定。国内系统就要包含拼音组合、手机号、生日等常见弱口令海外系统则要包含英文单词组合。这个不能指望一套字典通吃所有场景否则跑出来的结果往往不尽如人意。另外需要注意一点Payload处理规则Payload Processing可以给字典里的每条数据做二次加工比如统一转成小写、统一加上前缀后缀。这个功能在目标系统对密码格式有硬性要求时非常有用。比如系统要求密码至少8位且包含数字可以给字典里的弱口令自动追加两个数字后缀。3.3 运行时设置与攻击资源池控制爆破速度与压力很多人做完Payload配置就直接点Start Attack然后发现目标系统要么响应极慢要么直接封IP这就是没有配置资源池的典型体现。流量控制的核心在Resource Pool资源池里建议单独创建一个新的资源池把最大并发请求数限制在10到30之间而不是用默认的无限制模式。并发过高不仅容易触发风控还容易把目标系统压垮导致大量请求超时结果里全是假阴性反而影响判断。请求间隔Throttle Between Requests这个参数在实际测试中也很关键它的作用是让每个请求之间保留固定的延迟时间。比如设置2000毫秒延迟每秒最多只发0.5个请求这种模式适合目标系统有明显风控策略的情况。代价是整体测试时间拉长但胜在稳定性高不容易触发账号锁定。网络协议栈配置里Timeout和Retries的默认值需要根据目标系统响应速度适当调整。目标系统响应慢时把Timeout调大目标系统偶发超时时可以开启自动重试但重试次数不要太多否则会影响整体测试节奏。还有一个容易被忽视的配置项是“Update Content-Length”。当请求体长度因为Payload长度变化而需要动态调整时这个选项如果没勾选服务端会因为长度不匹配直接拒绝请求导致全线爆破失败。默认情况下这个选项是开启的但如果请求头做了特殊修改记得回来确认一下。3.4 请求生成规则加解密与编码处理有一类登录接口的请求体不是明文而是经过了某种编码或加密处理比如Base64、URL编码、自定义加盐哈希。这种情况下直接设置Payload爆破是无效的因为后端校验的是加密后的值不是明文。处理方法是在Payload Processing里加一条编码规则让BurpSuite在发送请求前先对明文密码做转换。常用的是Add Prefix、Encode这里可以选URL-encode、Base64-encode等。如果系统是JavaScript前端加密后将密文传给后端那么需要先分析前端加密逻辑然后在Payload Processing里用自定义脚本模拟同样的加密过程。另一种常见情况是密码经过MD5或SHA系列哈希后传输。这种情况可以用BurpSuite的Payload Processing规则里自带的Hash功能把字典里的明文密码统一哈希后再替换进请求体。如果前端加密算法比较复杂比如AES加固定Key则需要借助BurpSuite的扩展插件来实现自定义算法这个过程比较考验逆向能力但一旦跑通爆破效率和命中率会非常可观。4. 爆破执行与结果研判别被假阳性坑了配置全部就绪后点击右上角的Start Attack按钮BurpSuite会弹出Attack Results窗口实时展示每个请求的状态码、响应长度、响应时间和错误信息。结果研判这一步才是真正拉开差距的地方因为很多人的爆破过程不是不成功而是结果出现了大量假阳性和假阴性自己却不知道。4.1 响应码、响应长度与内容特征综合判断登录爆破结束后第一件事不是看状态码而是看响应长度排序。绝大多数系统在登录失败时会返回一个固定长度的错误提示登录成功时返回的内容长度明显不同。在结果面板里直接点击Length列按长度排序异常长度的响应会非常显眼。响应码也是重要参考但不要单独依赖。有些系统登录成功返回200失败也返回200只是在响应体里通过一个JSON字段区分状态比如{code:0,msg:success}和{code:1001,msg:password error}。这种情况下需要手动筛选一下响应体内容可以使用BurpSuite的搜索功能在响应内容里搜关键词“success”或“logout”。我还习惯用Comparer模块对几条有代表性的响应做快速对比。登录成功的那条响应和登录失败的那条响应在响应体长度、关键字段上有明显差异把这些差异记录成“成功特征”后面自动判断时直接用这个特征做过滤依据。Intruder结果面板支持正则提取和自定义匹配规则配置得当可以自动高亮所有成功登录的响应。4.2 应对验证码、登录失败锁定与动态Token实操中真正让人头疼的不是爆破时的速度问题而是目标系统里五花八门的防护机制。这些机制各有各的应对思路我把它们分开说。第一类图形验证码。图形验证码本质上是阻断自动化爆破的但它对已有验证码绕过手段的系统无效。常见情况是验证码只在前端校验后端并不校验或者验证码只在连续登录失败几次后才弹出这种情况下可以先用正确密码登录一次清掉失败计数再用字典跑密码。更少见的情况是验证码的答案藏在Cookie或响应体里这种就属于系统自身的安全漏洞测试时留意即可。第二类登录失败锁定。这种场景下暴力硬跑几乎没意义连续失败几次账号就被锁了后续所有请求都会返回“账号已锁定”。我的处理方式是先把并发调低、请求间隔拉大优先尝试高频弱口令避免把账号锁死。如果系统支持同一账号多地登录可以在不同会话里分别做测试但这类操作仍然要对目标系统的影响做充分评估。第三类动态Token。部分系统在每次登录时会下发一个随机的Token这个Token在请求体里一并提交后端校验通过才会继续处理登录逻辑。应对思路是先抓取一个有效的Token然后用Intruder的Recurring Payload或者编写外部脚本在每次爆破前自动拉取新Token并替换。这个方案实现起来相对复杂但对这类系统的爆破效果非常明显。对于验证码环节还有一个小技巧注册一个新账号观察正常登录时验证码是否会强制弹出。有些系统的验证码只针对失败频次高的IP或账号启用这种情况下只需要保证爆破请求频率不要太高同时不要让某个账号的失败次数过于集中就能绕开这个限制。这里再次强调所有尝试都应在授权范围内进行涉及用户数据的操作尤其要谨慎。4.3 结果导出与报告整理爆破结束后把结果里标记为成功或可疑的条目筛选出来选中后右键选择“Save Selected Items”即可导出包含完整请求和响应的XML文件。这个文件既可以作为测试证据留存也可以直接整理成测试报告的一部分。在报告里我通常会记录以下内容目标URL、爆破方式单参数或组合、使用的字典规模与来源、并发配置、测试起止时间、成功爆破出的账号密码组合、以及修复建议。这样的报告结构对后续整改跟踪非常有帮助。5. 扩充工具箱用捶死问题的插件和脚本思路命令行工具和自写脚本在整个密码测试流程里依然有不可替代的位置。BurpSuite的图形界面适合交互式分析和快速验证但面对大规模字典、复杂加密逻辑或分布式速度需求时脚本化操作的综合效率更高。5.1 基于脚本的批量密码测试思路以Python为例核心思路是用requests库模拟登录请求配合concurrent.futures做并发控制。关键点有三个会话维持、动态参数获取和结果判断。每次请求前可以先GET一次登录页面提取必要的Cookie和Token再POST登录请求避免因为Cookie缺失导致所有请求都被拒绝。代码逻辑不复杂但需要注意频率控制和异常捕获否则容易被服务端断连。用脚本做爆破的优势在于灵活加密算法可以直接用Python库实现字典可以动态生成结果可以实时写入数据库。缺点是开发调试时间较长不如BurpSuite开箱即用。我的习惯是接口请求格式简单时直接用BurpSuite请求体带加密逻辑时先分析算法再用脚本实现。5.2 结合字典构造工具做词表扩展密码字典的覆盖度直接决定爆破上限。除网络上常见的公开字典外还可以根据目标系统的特性自定义生成词表。比如公司域名缩写加年份、区域代码加数字序列、系统名称加默认端口这些规则都可以写进生成脚本跑出针对性极强的定制字典。不要忽视中文拼音组合在字典里的权重大量业务系统的账号主体是国内用户他们的密码习惯往往带有明显的拼音规律。把常用汉字拼音、手机尾号、生日组合考虑进去字典的命中率会明显提升。5.3 常用插件实战推荐BurpSuite的插件生态能补齐很多原生功能短板。日常做密码测试时我常用的是两个方向一是请求频率控制增强类插件可以更精细地实现随机间隔模拟真人操作节奏二是结果自动分析插件能在爆破过程中把成功登录的特征自动识别并高亮出来省去手动翻结果的麻烦。但也要提个醒插件不是越多越好安装过多插件会拖慢BurpSuite的运行速度尤其在爆破并发较高时界面会明显卡顿影响操作体验。建议只保留项目中真正需要的两到三个插件其余全部禁用。5.4 提升效率的配置模板保存技巧BurpSuite的Intruder支持在配置完成后将当前选项卡上的所有设置保存为模板下次遇到类似目标时直接载入模板不用重新设置。这个功能非常适合在多个项目里反复使用同一套字典和攻击类型的场景。具体路径是Intruder标签页右上角的配置下拉菜单里选择“Save Template”把攻击类型、Payload配置、运行时设置一并保存。下次做同类测试时选“Load Template”然后只需要更新目标域名和请求内容即可。实测下来这一项能节省大约20分钟的重复配置时间。当你逐渐熟悉这套流程后密码测试不再是每次都从零开始的工作而是变成一套可复用、可优化的标准流程。爆破速度和成功率也会在一次次的复盘里稳步提升。从抓包、配置Intruder、控制并发到处理验证码和Token再到结果研判和插件辅助这条链路完整走下来密码测试这件事基本就掌握了八成。剩下两成是在不同目标系统的真实环境里积累出来的经验。每个系统防护策略不同爆破方案的灵活调整能力才是真正的功力所在。我个人在实际操作中的体会是密码爆破不是简单的循环发请求它更像是一次针对目标认证逻辑的建模过程。把请求结构摸清楚、防护策略分析透、运行节奏控制好爆破其实就是一件顺理成章的事情。配置得当的Intruder使用体验比任何自动化脚本都来得直接这也是为什么BurpSuite至今仍然是Web安全测试工具链里的常青树。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑