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 漏洞检测示例

漏洞检测流程:

  1. 构造文件写入数据包
  2. 验证文件是否上传成功

步骤详解:

  1. 构造写入数据包:
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
  1. 验证数据包:
  • 匹配条件:Response body 中包含 "Yakit" 字符串的 MD5 值(53d363904730659dc7c1338948f77772)
  1. 设置匹配器:
  • 硬编码匹配:直接匹配字符串 "53d363904730659dc7c1338948f77772"
  • 变量匹配:使用设置变量功能进行更灵活的匹配
  1. 生成 PoC 模板:
  • 将两个数据包添加到 Fuzzer 序列组
  • 点击"生成为 Raw 模板"生成 YAML PoC

3. CSRF Token 保护下的爆破实战

3.1 pikachu 靶场示例

爆破流程:

  1. 获取 CSRF token
  2. 使用获取的 token 进行登录尝试

步骤详解:

  1. 提取 token:
  • 使用 XPath 提取器://input[@name='token']/@value
  • 变量名设为 token
  • 在第一个数据包中设置字典(如 pass 字典)
  1. 登录数据包配置:
  • 使用数据包一中设置的 tokenpass 变量
  • 注意:靶场的 Cookie 和 CSRF Token 有绑定关系,获取 token 时需要删除 Header 中的 Cookie
  1. 序列组设置:
  • 将两个数据包加入序列组
  • 设置执行顺序:先获取 token,再进行登录尝试
  1. 验证结果:
  • 通过搜索字符串验证爆破结果
  • 成功爆破出有效凭证(如 admin/123456)

4. 关键功能详解

4.1 提取器功能

  • XPath 提取器:用于从 HTML 响应中提取特定元素值
  • 变量设置:可将提取的值赋给变量供后续请求使用

4.2 匹配器功能

  • 硬编码匹配:直接匹配特定字符串
  • 变量匹配:更灵活的条件判断方式

4.3 字典设置

  • 可在前置请求中设置字典变量
  • 后续请求可使用这些变量进行爆破或测试

4.4 序列执行

  • 可定义多个请求的执行顺序
  • 支持请求间的变量传递

5. 最佳实践建议

  1. 复杂漏洞检测
  • 对于需要多步骤的漏洞,合理划分请求序列
  • 确保每个步骤的验证条件设置准确
  1. CSRF Token 处理
  • 注意 Cookie 和 Token 的绑定关系
  • 确保每次爆破前获取新的 Token
  1. 变量管理
  • 为变量使用有意义的名称
  • 注意变量的作用范围
  1. 结果验证
  • 设置明确的匹配条件
  • 使用多种验证方式确保准确性

通过掌握这些进阶功能,可以更高效地进行 Web 应用安全测试,处理复杂的漏洞检测场景。

Web Fuzzer 进阶教学文档 1. Fuzzer 序列功能概述 Web Fuzzer 是 Yakit 平台的核心组件之一,已从传统的"重放数据包"功能发展为支持多请求序列和 PoC 模板生成的强大工具。Fuzzer 序列功能特别适用于需要多个请求才能完成的测试场景。 典型应用场景: 访问漏洞 API 前需要先获取 token 上传文件后需要验证文件是否成功上传 其他需要前置请求包的场景 2. 多请求 PoC 生成实战 2.1 ThinkPHP RCE 漏洞检测示例 漏洞检测流程: 构造文件写入数据包 验证文件是否上传成功 步骤详解: 构造写入数据包: 验证数据包: 匹配条件: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 应用安全测试,处理复杂的漏洞检测场景。