使用burpsuite爆破带有验证码和随机uuid的密码的一次经验
字数 1848 2025-08-22 12:22:30
BurpSuite爆破带有验证码和随机UUID密码的实战教学
技术背景
本教程将详细介绍如何使用BurpSuite的Macro功能和custom-parameter-handler插件来爆破带有验证码和随机UUID的登录页面。这种场景下,传统的爆破方法无法直接使用,因为每次请求都需要动态获取验证码和UUID。
所需工具和环境
- BurpSuite Professional
- custom-parameter-handler插件(可从Burp插件商店下载)
- Jython环境(运行插件所需)
目标场景分析
目标登录页面有以下安全机制:
- 每次登录需要随机UUID
- 需要验证码(验证码在响应包中直接返回)
- 登录请求和验证码请求使用JSON格式数据
解决方案概述
- 使用Burp的Macro功能在登录前自动获取验证码和UUID
- 使用custom-parameter-handler插件处理JSON格式的响应
- 配置Session规则将获取的值自动填充到登录请求中
详细步骤
第一步:录制验证码请求的Macro
- 在BurpSuite中,转到
Project options>Sessions>Macros - 点击
Add新建宏 - 在Proxy历史记录中选择验证码的请求包
- 由于我们只需要获取响应,不需要提取值,所以不需要配置提取规则
注意:如果处理的是非JSON格式数据,可以在此处配置提取规则,但本案例需要插件处理JSON
第二步:配置Session规则
- 转到
Project options>Sessions>Session Handling Rules - 点击
Add新建规则 - 在规则中添加
Run a macro动作 - 选择之前创建的验证码请求宏
- 勾选
Run macro then invoke Burp extension选项 - 在下拉菜单中选择
custom-parameter-handler插件
第三步:配置Scope范围
- 在Session规则中配置
Scope选项卡 - 设置合适的URL范围,确保规则只在目标网站生效
第四步:配置custom-parameter-handler插件
-
将插件日志级别设为4(在Extensions模块中可查看详细调试输出)
-
配置UUID替换规则:
- 点击
+新建替换规则 - 名称:
replace uuid - 正则表达式:
"uuid":"(?P<uuid>.*?)" - 替换为:
"uuid":"\g<uuid>"
- 点击
-
配置验证码替换规则:
- 点击
+新建替换规则 - 名称:
replace code - 正则表达式:
"returnCode":"(?P<code>.*?)" - 替换为:
"returnCode":"\g<code>"
- 点击
-
配置空格去除规则(因为验证码返回包含空格):
- 点击
+新建替换规则 - 名称:
remove space - 正则表达式:
\s{2} - 替换为:空字符串
- 点击
第五步:验证配置效果
- 发送一个登录请求
- 查看Logger记录,确认UUID和验证码值已自动修改
- 检查请求包,确认参数已正确填充
第六步:使用Intruder进行爆破
- 将登录请求发送到Intruder
- 设置攻击类型为
Cluster bomb - 选择用户名和密码作为攻击参数
- 在
Options中设置:- 线程数设为1(避免验证码冲突)
- 请求间隔设为500ms
- 在custom-parameter-handler插件的
Options中勾选Intruder选项 - 开始爆破攻击
关键点总结
- Macro只用于获取响应:不直接用于提取JSON格式的值
- 插件处理JSON:custom-parameter-handler专门处理复杂格式的响应
- Session规则串联:将Macro和插件连接起来
- 验证码空格处理:需要额外规则去除验证码中的空格
- 爆破参数设置:低线程数和适当延迟确保稳定性
常见问题解决
-
插件不工作:
- 检查Jython环境是否正确安装
- 确认日志级别设为4查看调试信息
- 验证正则表达式是否正确匹配响应内容
-
值未正确替换:
- 检查Session规则的Scope是否包含目标URL
- 验证Macro是否正确录制
- 确认替换规则顺序正确(先获取值,再处理格式)
-
验证码错误:
- 确保线程数为1
- 增加请求间隔时间
- 检查验证码处理规则是否去除了空格
通过以上步骤,可以成功爆破带有验证码和随机UUID的登录页面,即使数据是JSON格式也能有效处理。