安全能力强化:Fuzztag再升级!

本文介绍了Fuzztag的最新更新,包括更简洁的写法、支持同步渲染,以及解析原理的优化。新版本允许更优雅地嵌套函数和数据,同时提供了同步数据生成的特性,提升测试效率。

安全能力强化:Fuzztag再升级!

背景

前面的一次更新对 Fuzztag 进行了升级,在使用时可以用更简便的写法,而且支持了同步渲染。
本篇文章将会从这两方面介绍下更新内容。

FuzzTag优化

使用 Fuzztag 标签时函数要与{{}}成对使用,如:{{base64dec({{base64enc(admin)}})}}嵌套的多了看起来特别乱,不够优雅。所以本次优化,在实现原本的语法基础上,支持了一些简便写法。

Fuzztag 原理

Fuzztag 解析时,会将输入数据解析为 Data 节点和 Tag 节点,如图中的红色部分就是 Tag 节点,其它的是 Data 节点


然后将 Tag 节点替换为执行结果(如果一个 Tag 生成了多个结果就做笛卡尔乘积,生成多份数据),再将数据按顺序拼接起来,就是最终的执行结果。知道了原理后,再想下为什么函数要与{{}}成对使用?原因是为了区别 Data 节点和 Tag 节点,遇到{{开始解析 Tag 节点,遇到}}结束解析,{{}}外面都是数据节点。再看下 Tag 节点内,包含函数名和参数,这里参数也是 Data 节点,这里节点开始的标志是遇到(,结束的标志是遇到),一个请求包解析的语法树如图


重点看下 Tag Node 的解析,这里将参数解析为了 Data2 Node,与普通的 Data Node 区别是这里不能使用(),因为这是 Data2 Node 的边界,所以需要转义使用,例如\(\)


本次优化重点针对 Data2 Node 部分,把它变成一个更智能的节点。

嵌套函数

base64enc 函数嵌套 int 函数的传统写法是这样的:{{base64enc({{int(1-5)}})}},简化后:{{base64enc(int(1-5))}},在原本的基础上省略了int函数外的{{}}
简便写法中的int(1-5)本应解析为 Data2 Node。优化后会尝试解析参数为函数调用,成功后,则生成一个 Tag Node,否则生成 Data2 Node。

嵌套数据

原理和嵌套函数相同,会尝试将 Data2 Node 部分解析为函数调用,这里 admin 明显不是,所以会作为数据节点处理。


再看一些极端情况,如图,第二种情况,已经成功将base64enc1()解析为函数调用,将会作为 Tag Node 执行,但是由于这个函数不存在,对于这种执行时错误,它的根 Tag 将会返回空数据。第三种情况,将 123() 解析为函数时发生错误,因为 123 不能作为 Identifier ,属于明显的语法错误,会直接返回当前根 Tag 的源码。


还有一种特殊情况,Fuzztag 调用无参函数时是可以省略()的,例如{{headerauth}},但是如果这个函数作为参数,即放在 Data2 Node 的位置会直接作为数据处理,这种情况不能省略括号,如图:


嵌套数据和函数

原本的 Data2 Node 变得更智能了,如果是函数调用,会解析为 Tag 节点,否则是 Data2 节点,但当函数和数据一起作为参数时,还是需要使用传统方法区分数据和函数调用。如图是生成admin1到admin3的base64编码的 Tag


因为要将admin和int(1-3)区分开,所以不得不用{{}}。还有另一种情况,如果生成的是1admin到3admin的base64编码,还是可以使用简便写法。原因是解析到)可以作为边界将 Tag 节点和 Data 节点分隔开。


当然,还可以这样用


平行标签优化

{{}}是 Tag Node 的边界,其内部是函数调用,那如果在{{}}和函数调用之间写一些字符会发生什么呢。如图,在标签内,会忽略空白符。可以将{{理解为开启函数调用模式,}}是关闭函数调用模式


作为参数使用也是一样的


同步渲染

多个平行的 Fuzztag 在生成数据时,会做笛卡尔乘积,在做爆破时,类似 Burp Suite 的 Cluster bomb 模式。但如果在爆破用户名密码时,账号和密码是一对一的关系,这种场景的爆破,在 Burp Suite 中 需要使用 Pitchfork 模式。现在 Fuzztag 也支持这种模式了。

实现原理

原理上就是在每个函数后加一个 Label ,在生成数据时,会将具有相同 Label 的数据记录当前位置并打包,再将他们进行笛卡尔乘积,再将打包的数据恢复到原位置,原理类似下面这个过程,但实际在笛卡尔乘积过程中就已经进行了排序。


方法介绍

Lebal 命名规则在函数基础上,还允许数字开头,同一层级具有相同 label 的函数生成的数据在组合过程中,他们的索引是同步的,如图


当然也可以嵌套使用,但只有同级标签才会生效


总结

本次更新简化了 Fuzztag 的写法,支持了同步渲染,让 Fuzztag 可以适用于更多的场景。Fuzztag 越来越好用了,师傅们要多多使用啊。

Yak官方资源

Yak 语言官方教程:
https://yaklang.com/docs/intro/
Yakit 视频教程:
https://space.bilibili.com/437503777
Github下载地址:
https://github.com/yaklang/yakit
Yakit官网下载地址:
https://yaklang.com/
Yakit安装文档:
https://yaklang.com/products/download_and_install
Yakit使用文档:
https://yaklang.com/products/intro/
常见问题速查:
https://yaklang.com/products/FAQ

### Yakit专业版概述 Yakit专业版是一款功能强大的交互式应用安全测试平台,其核心优势在于支持强大的Yaklang语言以及提供直观的图形化用户界面(GUI)。以下是关于Yakit专业版的下载地址、功能介绍及使用指南的具体说明。 --- ### 下载地址 Yakit专业版的下载可以通过官方提供的渠道获取。访问官方网站或指定的镜像站点进行下载[^1]。确保从可信来源下载以避免潜在的安全风险。具体步骤如下: - 访问官网并注册账号。 - 登录后,在“下载”页面选择适合操作系统的版本。 - 安装完成后,通过图形化安装程序启动Yakit或在命令行输入`yakit`启动。 --- ### 功能介绍 #### 1. **MITM模式** Yakit专业版提供了全面的中间人攻击(MITM)功能,能够拦截和分析网络流量。通过配置代理和SSL证书,可以实现对HTTPS通信的解密与分析[^2]。主要功能包括: - 配置代理:设置浏览器或其他工具的代理指向Yakit提供的代理地址。 - 启用MITM:启用中间人攻击功能,拦截所有经过代理的网络请求。 - 流量分析:实时查看并修改请求与响应数据包。 #### 2. **Web Fuzzer** Yakit内置了高效的Web模糊测试工具,支持自动化漏洞检测。通过创建Fuzzer任务,用户可以快速测试目标网站的安全性[^1]。关键特性如下: - 基础URL与参数配置:定义基础URL和需要测试的参数。 - 使用Fuzztag语法:如`{{random_string(5)}}`,生成动态变量进行测试。 - 自动化扫描:识别SQL注入、XSS等常见漏洞。 #### 3. **插件系统** Yakit专业版提供了一个丰富的插件生态,支持用户扩展平台功能。主要特点包括: - 插件商店:探索并安装预置或第三方开发的插件。 - 热加载支持:无需重启即可加载新插件。 - 被动扫描:通过插件自动检测网络流量中的潜在威胁。 #### 4. **项目API** Yakit专业版还提供了完善的API文档,支持开发者集成自定义脚本或工具[^1]。通过API,用户可以实现以下功能: - 自动化任务调度。 - 数据包批量处理。 - 结果导出与分析。 --- ### 使用指南 #### 1. **启动Yakit** - 图形化安装:从应用程序菜单启动Yakit。 - 命令行启动:在终端输入`yakit`。 #### 2. **配置MITM** - 设置代理:将浏览器或其他工具的代理指向Yakit提供的代理地址。 - 安装SSL证书:下载并安装Yakit提供的SSL证书,以便解密HTTPS流量。 - 启用MITM:在Yakit中启用中间人攻击功能。 #### 3. **创建Web Fuzzer任务** ```python # 示例代码:创建一个简单的Fuzzer任务 base_url = "http://example.com/login" params = { "username": "{{random_string(8)}}", "password": "{{random_int(1000, 9999)}}" } yakit.create_fuzzer_task(base_url, params) ``` #### 4. **使用插件** - 打开插件商店,搜索所需插件。 - 点击安装并启用插件。 - 在MITM操作台中查看插件扫描结果。 --- ### 注意事项 - 确保已正确配置代理和SSL证书,否则可能无法正常拦截HTTPS流量。 - 使用Yakit时需遵守相关法律法规,不得用于非法渗透测试或攻击行为。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值