Yakit入门指南:MITM代理、流量过滤、标记替换与热加载功能详解
字数 2665 2025-10-01 14:05:45
Yakit 核心功能实战教学指南
一、 工具简介与安装
Yakit 是一款集成化的安全测试平台,由 Yaklang 团队开发。它提供了从基础抓包到高级漏洞挖掘的一系列功能,旨在提升安全测试的效率。
- 官方地址:https://yaklang.com/
- 安装:访问官网直接下载安装包,完成安装后启动即可使用。
二、 MITM 中间人代理与劫持
MITM(Man-in-the-Middle)是 Yakit 的核心功能之一,用于拦截、查看和修改 HTTP/HTTPS 流量。
1. 免配置启动(推荐新手)
此模式极大简化了抓取 HTTPS 流量的配置过程。
- 路径:
手工测试->MITM交互式劫持 - 操作:
- 进入劫持页面后,点击
免配置启动。 - 在弹出的设置界面中输入目标网址。
- Yakit 将自动启动一个新的 Chrome 浏览器会话,该会话的所有流量都会被代理。
- 进入劫持页面后,点击
- 核心优势:在此模式下,无需手动安装 CA 证书即可解密和抓取 HTTPS 流量,极大降低了使用门槛。
2. 传统证书安装(可选)
如果需要代理系统或其他浏览器中的流量,仍需安装 CA 证书。
- 路径:在 MITM 劫持页面的
高级配置中下载证书。 - 操作:
- 下载的证书文件后缀为
.pem,需手动重命名为.crt后缀。 - 双击重命名后的证书文件,根据系统向导将其安装到“受信任的根证书颁发机构”存储中。
- 下载的证书文件后缀为
三、 实用功能配置
1. 界面主题切换
Yakit 支持暗黑模式以保护视力。
- 路径:
设置->模式切换-> 开启暗色 - 特性:修改后立即生效,无需重启软件。
2. 流量过滤
在复杂环境中抓包时,过滤功能能有效屏蔽无关流量,聚焦目标。
- 操作:
- 在 MITM 劫持页面,点击
过滤器按钮。 - 在弹出的界面中,输入过滤条件(如
hostname==target.com)。 - 确认后,抓包界面将只显示符合条件的数据包。
- 在 MITM 劫持页面,点击
四、 标记与替换功能
1. 标记 (Mark)
用于对测试过程中发现的重要请求或漏洞进行高亮标记,便于后续快速定位和回顾。
- 操作:在数据包历史记录中,选中目标请求,点击标记颜色(如蓝色)即可完成标记。
2. 替换 (Replace) - 导入 HAE 规则
此功能可实现请求/响应内容的自动修改,类似于 Burp Suite 的 Match & Replace,并能导入著名的 HAE 规则集。
- 规则管理入口:在 MITM 劫持页面的
内容规则选项下,有默认配置、导入配置、导出配置三个操作项。 - 导入官方默认规则:
- 点击
默认配置。 - 在弹出的对话框中,先点击
① 使用默认配置,再点击② 导入。即可成功导入 55 条官方规则。
- 点击
- 导入 HAE 规则:
- 规则转换:HAE 规则需要先转换为 Yakit 识别的 JSON 格式。可使用 GitHub 上的转换工具:youmulijiang/HaeToYakit。
- 运行提供的脚本,将 HAE 规则文件转换为 Yakit 格式。
- 在
内容规则处选择导入配置,将转换后的 JSON 文件导入即可。
- 自定义规则:
- 点击
新增规则。 - 配置规则细节,包括匹配条件(如域名、URL、关键词)和替换动作(如替换请求头、正文等)。
- 点击
- 规则共享:使用
导出配置功能可将当前规则集导出为 JSON 文件,分享给团队成员。
五、 Web Fuzzer 与爆破
Yakit 的 Web Fuzzer 模块集成了重放和爆破功能,其核心是 Fuzz Tag 语法。
1. Fuzz Tag 基础
Fuzz Tag 是一种用于生成动态 payload 的语法结构,格式为 {{标签名(参数)}}。
- 示例:
{{randint(1,100)}}会生成 1 到 100 之间的随机整数。
2. 爆破实战方法
a) 直接插入 Fuzz Tag
在需要爆破的参数位置(如 URL、请求体),直接输入 Fuzz Tag。
- 示例:在 ID 参数处输入
{{int(1-10)}},发送请求后,Yakit 会自动爆破 1 到 10 的所有值。
b) 右键插入 Fuzz Tag
在输入框右键,选择 插入标签/字典,这是更便捷的方式。
- 可插入类型:
- 空字节:
{{hexd(00)}},用于测试空字节截断等漏洞。 - 字典文件:从本地加载字典文件,效果同 Burp Intruder 的 payload 类型。
- 加密标签:支持组合标签进行编码加密。
- 示例:
{{base64enc({{int(1-10)}})}},会先将 1-10 的数字转换为字符串,再进行 Base64 编码。
- 示例:
- 空字节:
3. 重要提示
- 文档过时警告:官方文档中的部分旧版 Fuzz Tag(如
{{x}}已无法使用,应以实际软件内支持的标签为准。 - 学习资源:欲了解更多 Fuzz Tag 的用法和样例,请参考 《Fuzz Tag Playbook》。
六、 热加载 (Hot-Reload) 高级功能
热加载是 Yakit 的一项强大特性,允许用户编写自定义的 Yaklang 函数来扩展 Web Fuzzer 的能力,实现高度定制化的 Payload 生成和处理。
1. 核心概念
- 定义:在 Web Fuzzer 运行过程中,动态加载并执行用户编写的 Yaklang 函数,无需重启整个程序或模块。
- 本质:创建自定义的、可复用的 Fuzz Tag。
2. 调用方式
- 无参数函数:
{{函数名()}} - 带参数函数:
{{函数名(参数)}}
3. 编写第一个热加载函数
- 在 Web Fuzzer 模块中找到热加载代码编辑区。
- 编写一个符合 Yaklang 语法的函数。
- 示例:创建一个简单的 Base64 编码函数。
// 函数名:basetest // 参数:s (要编码的字符串) fn basetest(s) { return base64.Encode(s) } - 保存或加载函数。
- 在 Fuzzer 的 Payload 位置使用
{{basetest(test)}}即可调用该函数。
4. 注意事项
官方文档和社区示例可能存在未及时更新的情况,部分代码可能需要根据最新版的 Yaklang 语法进行调整。此功能需要一定的编程基础,建议从简单函数开始实践。
总结:本文档涵盖了 Yakit 的安装、核心代理功能、流量处理、规则利用、爆破技巧及高级扩展功能,依据提供的链接内容提取关键知识点汇编而成,可作为入门和深度使用的参考指南。