背景
众所周知,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