征文投稿|当Yakit 与 B*** S**te正面对碰!
2022-11-3 17:31:36 Author: Yak Project(查看原文) 阅读量:13 收藏

背景

众所周知,BurpSuite几乎成为全球WEB安全从业者必用的安全测试工具,然而十余年来尚无一个可替代的解决方案。破解版被投毒风险高、商业版太贵、插件难写、依赖java…等等问题逐渐显露。

于我个人而言,经常会遇到的一种情况就是,有的网站BurpSuite一打开就会被WAF拦掉,这也是我从Burp转到Yakit的契机和原因之一吧。

在经过一段时间的使用与体验后,想着针对两个工具之间的功能性模块,来一个正面对决,1V1分析一番。

Proxy模块

BurpSuite

先看熟悉的Burp抓包,打开抓包:

所有的流量都会拦下来,包括一些没用的"心跳",如下图,

比如付款的页面,会不断发送数据包进行检测是否付款成功。

尽管这里可以设置要拦截的流量,但是设置还是比较麻烦的,比如你要对一个网站进行测试,设置好了过滤的策略,这时候,突然电脑关机了…你打开Burp又要设置一遍过滤的策略。

在还没遇到并使用Yakit之前,我的解决办法是装一个插件 knife,对于没用且频繁发送的数据包dismiss。

它根据url或host可以选择drop或者forward

但是,我们在实际测试中还会有个问题,比如你测试的是a.com,有一个"心跳"为a.com?log=nkebsfks(随机数)。

这个时候如果你选择dismissed整个host,那你测试这个站的流量全部会被放过,如果你选择dismissed这个url,下一个"心跳"仍然会被拦截(因为含有随机数)。

所以又不得不回到这里设置拦截的规则,而且对于不懂正则的人来说,这里可能又会碰上难题。

Proxy取代模块-MITM

Yakit


我们先看过滤模块:

首先这个界面和Burp比起来,很简洁有没有?

而且就操作而言,Yakit也相对方便很多(不需要你点击那么多次),Burp设置一条过滤要点击8、9次,而Yakit只需要2次。

接下来看标记替换规则

新增规则

添加规则后可以在该规则设置对哪些流量生效

然后发送一个请求参数为wifi的数据包看标记效果

我发送的wifi也被替换成了WIFI.

Yakit这些流量替换、标记的功能Burp虽然也有,不过相比起来,个人觉得Yakit的实现方式会更加方便使用。

接下来说一下Burp没有的功能—热加载

在Burp中如果你想自定义处理经过代理的流量,就需要自己开发插件,在懂java的基础上学个一两天差不多就可以开发插件了。

当然插件也可以用Python开发,不过需要下载Jython,麻烦事也挺多的…而对于Yakit,自定义处理流量就很简单了。

demo里第一个if是如果请求包含/products/plugins/plugin_11就替换内容后发送;第二个if是如果请求包含/products/plugins/plugin_12直接丢弃,即便你不懂java、python、go…这几行代码也没有压力吧~

如果Yakit自带的规则满足不了你,那就使用热加载,想怎样就怎样!之前提到过a.com?log=sevse(随机数)也可以使用热加载过滤掉。

Repeter模块

BurpSuite

这个相信大家都已经很熟悉了。

Repeter取代模块-Web Fuzzer

Yakit

效果上和Burp是差不多的

Decoder模块

BurpSuite

说实话这个模块我基本上没有用过,因为它不支持中文解码。还有一点就是有点麻烦,你需要找Decoder模块,在插件多的情况下,一眼看不到Decoder模块。

关于中文解码,插件knife可以解决,不过knife默认编码好像不是GBK,需要点点点进行切换…我修改了knife的源码优化了这点。

需要的可以自取 https://github.com/VVeakee/knife

Decoder取代模块-Codec

Yakit

包含编码以及加解密算法

此外,Codec不单单是个模块,在代码中是有这个全局变量的,后面会在热加载中用来生成自定义的payload.

当然,最方便的用法还是右键即可,这个不需要解释吧,Yakit YYDS!

Intruder模块

BurpSuite

对于Intruder模块最重要的无非两点:

1.payload位置

2.payload(字典)

在以往的使用经验中,大概率是要你先生成payload然后load,比如你需要6位随机字符,很遗憾,Burp里并没有适合的生成该payload的type…

你可能会用python写一段代码或者crunch生成payload,有时候甚至会想,偌大的Burp就没有一个好用的插件可以自动生成payload吗?

Intruder取代模块-Web Fuzzer

Yakit

下面是自带的生成payload的规则

如果不存在符合你需要的payload可以直接用代码生成,如下,生成6位数字爆破手机验证码的payload为{{int(0-100000|6)}}

除了代码生成的payload也可以使用定义好的payload

把你定义好的payload上传云端,调用就是{{x(字典名)}}比如我要使用user_top10这个字典:

如果插入两个位置就是对应Burp里的Cluster bomb模式,请求总数为payload1的个数 乘 payload2的个数。

如果仍然没有你想要的payload也没关系,咱们可以自己直接造。这里有两种方式造payload,强烈推荐第一种!

1.热加载

示例a:转小写

示例b:base编码

保存后直接粘贴payload就可以

这个地方的payload可以说是即用即生成,超级方便!

2.常规写脚本

下图是用字符集[email protected]#生成10个6位的随机字符串

然后在payload管理里面专门生成一个字典temp放临时字典

Turbo Intruder并发插件

BurpSuite

一般是用来测试并发

并发插件取代模块

Yakit

Yakit的并发集成在Web Fuzzer中

Target模块

BurpSuite

Target取代模块-网站树

Yakit

一些建议

Some Suggestions

在网站树状图的地方,大概是我喜欢一眼能看到数据包的布局吧,如下图:

总结

Conclusion

综上所述,Yakit作为后起之秀,已经把Burp经常用的功能全实现了,并且用起来更加方便快捷。

而且相比于Burp的插件,Yakit的插件更容易开发,还有一点算是大势所趋吧,Yakit的数据会上传到云端,你的个人习惯、使用的工具都会保存在云端(如果字典也可以上云那可就太妙了),可谓是拿来就用,但是Burp的话,换个设备就是又要从0开始了。

感谢@VVeaker师傅的文章投稿,Yakit征文活动长期进行中>>找牛人写牛文!—Yakit有奖征文活动正式启动欢迎各位师傅们多写多投~

往期推荐>>

安全基础设施:用Fuzztag优雅地生成与变形任何Payload

新功能:史上最好用的反连&JavaHack,安全能力基座强化ing

插件分析|Yaklang SQL Injection 检测启发式算法

安全研发启蒙课: 子域名收集联动Yak漏扫插件


文章来源: http://mp.weixin.qq.com/s?__biz=Mzk0MTM4NzIxMQ==&mid=2247491405&idx=1&sn=65cff63a861899d97b9a9a6b3b0a3864&chksm=c2d263e9f5a5eaffe52e9ee2d964a1827f526d053fb5f340a024d21af2ec294e2e9052036a60#rd
如有侵权请联系:admin#unsafe.sh