在上一篇介绍“超级牛”的 Web Fuzzer 时:
Repeater 和 Intruder 的国产化平替 Web Fuzzer
我们说:Yakit 自定义的 Fuzztag 是 Web
Fuzzer 的灵魂。
Yakit 可以使用各种各样的 Tag 来实现核心功能:
1、Fuzz 一个参数的证书范围我们常用 {{int(1-100)}}
2、为一个参数值增加一个随机字符串,我们使用 {{randstr(10,10)}}
3、针对某一个位置进行爆破,比如爆破目录等,我们通常使用 {{x(dictname)}}
为了形象的、图文并茂的体现 Fuzztag,我找到技术阿勇,让他认真地帮我讲解了一遍。
因为都是Fuzzer,牛同学一不小心就把 Web Fuzzer 和热加载 Fuzzer 混为一谈了。
正在技术阿勇给我解答的同时,牛同学不小心听到他说......
所以,热加载存在的意义究竟是什么呢 ?
其实,热加载 Fuzz 是一段在 Web Fuzzer 执行时运行的特定代码,它可以修改请求和响应包,让用户可以自由的控制请求过程。
通过 {{yak}} 标签告诉引擎这是一个 Yak HotPatch 标签,作用是调用热加载代码中的funcname 的函数:
{{yak(funcname)}}
代码示例:
functionname = func() {
publicKey = "xxx"
iv = randstr(12)
aesKey = randstr(16)
encData = codec.AESGCMEncrypt(aesKey, "aaa", iv)~
encIv = codec.RSAEncryptWithOAEP(publicKey, iv)~
encAesKey = codec.RSAEncryptWithOAEP(publicKey, aesKey)~
return
json.dumps({"data":codec.EncodeBase64(encData),"encryptedIV":codec.EncodeBase64(encIv),"encryptedKey":codec.EncodeBase64(encAesKey),"iv":iv})
}
{{yak(funcname|param)}}
{{yak(funcname|param1|param2)}}
实用案例
热加载 Fuzz 代码实现加解密
01
劫持某后台登录数据包发现account为明文password 加密且含有一个token签名。
02
检索前端源代码,发现两个参数,一个参数t1,一个参数s1。t1参数为token值 s1参数目前还未知。
03
id="t1" value="58ab45522ab247e7ba6c58e3cca8102f
id="s1" value="sdrfedwsdjujnsde
04
热加载编写加密函数 首先获取token。
rsp,err = http.Get("http://120.0.0.1:2362/login")die(err)header,body= poc.Split(http.dump(rsp)[0])regexp = `t1[^>]+value="([^"]+)"`value = re.FindSubmatch(body,regexp)[1]dump(value)
05
handle = func(data) {key = "sdrfedwsdjujnsde"data = codec.PKCS7Padding(data)res = codec.AESECBEncrypt(key, data,nil)~return codec.EncodeBase64(res)}
06
07
点击复制。
08
插入需要fuzz的参数处,如下:
更新日志
Yakit v1.2.2-sp3
1. Web Fuzzer Responses右下新建WebFuzzer使用Request
2. 缓存MITM 交互式劫持字体大小
3. 编辑器抬起位置与焦点距离超过三行则不显示编辑器菜单
4. 插入标签的标签列表新增拖拽
5. 优化editor-menu响应式布局
6. 处理解码内容溢出问题
7. ChatCS上线
Yaklang 1.2.3
1. 优化 sync.WaitGroup 与 SizedWaitGroup 接口
2. 优化 poc 指定参数
3. 绑定流量指定到插件运行时和插件搜索
4. 修复 SQL 注入的字段丢失和潜在漏报
5. Yaklang New Library:sca
Yaklang 1.2.2-sp7
1. 修复 MITM 代理 SNI 缺失导致某些网站无法劫持的 BUG
2. 新增 poc 快速修改数据包内容的接口
3. 修复 MITM 中 isHttps flag 错误的 Bug
4. 修改 MITM DNS 缓存问题:默认不配置 DNS 使用系统 DNS
5. 补全 XSS 插件中的一些信息
6. 移除 go-bindata
7. 降低 shiro 漏洞登记
8. 新增 upload case,优化 upload fuzztag generator
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进阶之旅