批量目录扫描时规避waf的方法

讲述一种骚思路

红队执行任务过程中免不了进行信息收集,尤其是对大规模资产的信息收集,会遇到一些联动封禁的情况,子域名扫目录被封了,剩下跟这个根域名相关的站点全部gg,扫一个死一片,那不行啊,得想办法干它。

代理池成本又很高,总不能贷款打红队吧

简单讲下思路,就是模拟用户正常访问的规律,比如说我访问一个子域名,上来就访问/admin也是没有问题的,因为用户以前可能收藏了这个url,双击就访问了,然后工具就不再对该子域名进行扫描,而是对子域名列表的第二个子域名访问/admin,以此类推,当子域名列表走过一遍后,再从子域名列表的第一行访问/user,这样会形成比较长的时间间隔,符合用户访问的规律,而有些蓝队进行日志分析时,日志量比较大会优先去筛选事件时间的范围,间隔较长的扫描能规避一些不必要的麻烦。

类似狙击手,偶尔biu一下,隐匿性比较高

这里使用fuff作为fuzz工具,fuff支持加载多个字典进行混合爆破,所以用它。fuff有个参数-mode可以选择多字典时的爆破规则,跟burp的Intruder模式类似,使用-mode pitchfork能够对字典进行一一爆破,如图所示。
在这里插入图片描述

本来也想过采用多次读取循环执行命令的方式,但思来想去总觉不是很优雅,所有用Python脚本生成两个一对一字典,比较快捷、简单、可控,不需要考虑进程的问题,写代码必须优雅。生成的字典,如下所示。

A	B
C	B
E	B
A	D
C	D
E	D
A	F
C	F
E	F

准备两个文件,一个是url.txt存储目标的urls,另一个是dir.txt存储需要扫描的目录字典,两个文件的最后一行都不要留空行或者换行,然后运行脚本会生成url2.txt、dir2.txt,就是需要使用fuff挂载的字典了,观察下两个文件的行数是否对应,不对应肯定是操作有误了。代码如下。

dir_lines = len(open("dir.txt", "r",encoding="utf-8").readlines())
url_lines = len(open("url.txt", "r",encoding="utf-8").readlines())

with open("url.txt", "r",encoding="utf-8") as f:
    with open("url2.txt", "w+",encoding="utf-8") as f2:
        txt = f.readlines()
        for i in range(dir_lines):
            f2.writelines(txt)
            f2.write("\n")
        

with open("dir.txt", "r",encoding="utf-8") as f:
    with open("dir2.txt", "w+",encoding="utf-8") as f2:
        txt = f.readlines()
        txt[-1] += '\n'
        for line in txt:
            f2.write(line*url_lines)

生成字典之后,直接挂载fuff即可享受

ffuf -w dir2.txt:DIR -w url2.txt:URL -u URL/DIR -c -mode pitchfork

在这里插入图片描述

如果我没读过书,我可以找别的活做,可我偏偏又读过书——孔乙己

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值