Web Fuzzer 进阶
字数 1285 2025-08-10 08:28:07
Web Fuzzer 进阶教学文档
1. Fuzzer 序列功能概述
Web Fuzzer 是 Yakit 平台的核心组件之一,已从传统的"重放数据包"功能发展为支持多请求序列和 PoC 模板生成的强大工具。Fuzzer 序列功能特别适用于需要多个请求才能完成的测试场景。
典型应用场景:
- 访问漏洞 API 前需要先获取 token
- 上传文件后需要验证文件是否成功上传
- 其他需要前置请求包的场景
2. 多请求 PoC 生成实战
2.1 ThinkPHP RCE 漏洞检测示例
漏洞检测流程:
- 构造文件写入数据包
- 验证文件是否上传成功
步骤详解:
- 构造写入数据包:
GET /index.php?s=index/\think\template\driver\file/write&cacheFile=test.php&content=%3C?php%20echo%20md5(%27Yakit%27);unlink(__FILE__);?%3E HTTP/1.1
Host: 127.0.0.1:8888
- 验证数据包:
- 匹配条件:Response body 中包含 "Yakit" 字符串的 MD5 值(53d363904730659dc7c1338948f77772)
- 设置匹配器:
- 硬编码匹配:直接匹配字符串 "53d363904730659dc7c1338948f77772"
- 变量匹配:使用设置变量功能进行更灵活的匹配
- 生成 PoC 模板:
- 将两个数据包添加到 Fuzzer 序列组
- 点击"生成为 Raw 模板"生成 YAML PoC
3. CSRF Token 保护下的爆破实战
3.1 pikachu 靶场示例
爆破流程:
- 获取 CSRF token
- 使用获取的 token 进行登录尝试
步骤详解:
- 提取 token:
- 使用 XPath 提取器:
//input[@name='token']/@value - 变量名设为
token - 在第一个数据包中设置字典(如
pass字典)
- 登录数据包配置:
- 使用数据包一中设置的
token和pass变量 - 注意:靶场的 Cookie 和 CSRF Token 有绑定关系,获取 token 时需要删除 Header 中的 Cookie
- 序列组设置:
- 将两个数据包加入序列组
- 设置执行顺序:先获取 token,再进行登录尝试
- 验证结果:
- 通过搜索字符串验证爆破结果
- 成功爆破出有效凭证(如 admin/123456)
4. 关键功能详解
4.1 提取器功能
- XPath 提取器:用于从 HTML 响应中提取特定元素值
- 变量设置:可将提取的值赋给变量供后续请求使用
4.2 匹配器功能
- 硬编码匹配:直接匹配特定字符串
- 变量匹配:更灵活的条件判断方式
4.3 字典设置
- 可在前置请求中设置字典变量
- 后续请求可使用这些变量进行爆破或测试
4.4 序列执行
- 可定义多个请求的执行顺序
- 支持请求间的变量传递
5. 最佳实践建议
- 复杂漏洞检测:
- 对于需要多步骤的漏洞,合理划分请求序列
- 确保每个步骤的验证条件设置准确
- CSRF Token 处理:
- 注意 Cookie 和 Token 的绑定关系
- 确保每次爆破前获取新的 Token
- 变量管理:
- 为变量使用有意义的名称
- 注意变量的作用范围
- 结果验证:
- 设置明确的匹配条件
- 使用多种验证方式确保准确性
通过掌握这些进阶功能,可以更高效地进行 Web 应用安全测试,处理复杂的漏洞检测场景。