目录
- 简要本章具体内容和安排缘由
- 简要本课具体内容和讲课思路
- 简要本课简要知识点和具体说明
- 演示案例:
- Safedog-默认拦截机制分析绕过-未开CC
- Safedog-默认拦截机制分析绕过-开启CC
- 总结:
- Aliyun_os-默认拦截机制分析绕过-简要界面
- BT(防火墙插件)-默认拦截机制分析绕过-简要界面
- 涉及资源:
简要本章具体内容和安排缘由
这四块不是说所有的东西都能绕过,如果说所有的层面你都能绕过,那这个WAF还有什么存在的必要呢,我们能绕够只是说某些地方有相关防护是不安全的,我们可以绕过,不是说他所有的拦截你都能绕过,有时候我们会发现在实际情况下面,有些东西你没思路,或者你搞不了,那不代表那个东西就能绕过,可能就是绕过不了
在测试过程中每一步都会被拦截,所以我们要学习测试方法,基本上文章没有讲到的就是绕过不了或者很难绕过
简要本课具体内容和讲课思路
信息收集有很多方法,比如像前期的子域名扫描,但是有一些信息收集是不会触发WAF的,他没有和实际网站相接触,比如我们想子域名收集,资产信息收集,在现在我们可以不通过网站的扫描,就能获取,可以通过第三方接口查询网站的相关信息,并没有涉及到对网站的相关扫描,所以不会触发这个WAF,这些东西我们就不说了,能触发WAF,又比较关键的信息收集的手段,其中最重点的就是目录扫描,就是我们常说的扫他的敏感文件,是否有备份文件、敏感后台地址,是否有上传地址这些东西,这是非常重要的信息收集的东西,就是对这个网站进行目录扫描,这个是非常重要的,也是我们经常做安全测试会做的一步,利用相关的扫描工具对它的文件或者目录这种东西进行扫描探针,这一步由于是直接对网站进行扫描的,这一块是会直接触发到WAF拦截的,所以我们今天讲的就是围绕这一点进行讲解
简要本课简要知识点和具体说明
绕过分析关于WAF界面的功能介绍,然后利用fuzz模糊测试去进行测试,那些拦截,那些不拦截,在拿出来对比、探针,得到最终的结果,然后我们再根据他的结果和规则去想相应的办法,去尝试绕过
演示案例:
Safedog-默认拦截机制分析绕过-未开CC
我们先用目录扫描器对有使用安全狗的网站进行扫描,这个结果显然是假的,是一种误报,这种误报给你的错觉目录是存在,但是他压根就不存在
安全狗防护日志是空的可能是功能上的问题,可能是数据包压根就被安全狗阻止之外,就是说安全狗压根就没有接收到这个请求的数据包
使用head请求方法,会导致被安全狗拦截,可以更换成get请求方式,模拟用户用真实浏览器去请求的一个方式
这个工具默认选择head方式,是因为head的请求回复速度会比get请求方式会快,也就是说这个程序扫描的会更加快捷,但是工具和waf是可以直接拦截出来的
Safedog-默认拦截机制分析绕过-开启CC
我们把安全狗的等级提升一个档次,把cc攻击防护给开启
我们用刚才的工具再对网站进行扫描,误报就出现了
我们再看一下网站,他说请求过于频繁已经被拦截,CC其实是检测你的访问速度、你的来源,这些我们前面讲过是CC的大致原理
由于扫描工具是多线程工具、速度工具,现在请求速度过快了,因为按照正常网站访问速度来讲的话,你是不可能1秒钟或者在短时间内请求了大量数据包,这个是不现实的,这个绝对是工具,所以拦截的原因是他检测到你这个请求不是正常用户,你是工具,速度过快了
我们的绕过思路就是跟用户的访问习惯一致就可以了,我们可以采取延时扫描,设置3或者4秒,看设置多少秒的时候既能保证速度也能保证结果,这样子就是完美的
现在网站就没有拦截了,但是扫的速度有点慢,但是又不得不这样
上面这个是更改请求方式,下面这个是模拟用户请求数据包,模拟用户请求数据包多了几个参数
不是黑名单和白名单,那就是按他的防护规矩来,对方如果在这里把路径设置上去之后,这个路径下面的攻击就会成为白名单,这个东西就不会被拦截;同样的道理如果设置黑名单,也就是说这个东西无论你怎么搞都是死的,不会被绕过,所以这个是黑名单白名单的具体区别
爬虫白名单就是为了确保网站能被正常收录,安全狗的默认设置是为了正常应用和防护的兼容性,把防护等级调的高的话,可能一些正常访问也会出现误报、误拦截,这样子是会干扰正常业务的进行,所以安全狗默认设置是建立在一个平衡的层面去选择一些功能的开关的,但是有些人宁愿误报,也不愿意放过
组织搜索引擎的爬虫会导致网站的收录过低,会影响到一个网站的流量、权重这些价值信息
由于这里是爬虫白名单,爬虫进来白名单,对方是爬虫过来的就不会拦截,因为它是一个正常的,搜索引擎过来的,爬你的网站数据,给搜索引擎一个收录的结果
修改ua头,就可以模拟搜索引擎访问,这也是反爬虫的一个技术
但是扫描结果却没有出来,只能使用python脚本去模拟用户访问,然后修改UA头,才能得到结果
import requests
import timeheaders = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','Cache-Control': 'max-age=0','Connection': 'keep-alive','Cookie': 'PHPSESSID=4d6f9bc8de5e7456fd24d60d2dfd5e5a','sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Microsoft Edge";v="92"','sec-ch-ua-mobile': '?0','Sec-Fetch-Dest': 'document','Sec-Fetch-Mode': 'navigate','Sec-Fetch-Site': 'none','Sec-Fetch-User': '?1','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)'
}for paths in open('php_b.txt', encoding='utf-8'):url = "http://127.0.0.1/pikachu"paths = paths.replace('\n', '')urls = url + pathsproxy = {'http': '127.0.0.1:7777'}try:code = requests.get(urls, headers=headers, proxies=proxy).status_code# time.sleep(3)print(urls + '|' + str(code))except Exception as err:print('connect error')time.sleep(3)
这个脚本会把数据包发送到BP,我们可以直接在BP上面看请求的内容
使用python脚本模拟用户访问不指向头,请求的数据包内容就是这样子
很明显就能看出来是python脚本在请求
我们选择用脚本去开发这些工具,是因为你自己写的脚本,你任何地方都能控制,别人的工具不提供这个给你,你就没办法了
我们之所以去学python开发,原因是不要去求别人的工具,你用别人的东西,永远是别人说怎么搞,你用自己的东西,你想怎么来就怎么来,不是说必须要开发,是很多东西,你要满足,就必须要有这个能力
用脚本跑出来的结果
实现了CC开启也能绕过,而且不用延迟,保证速度和质量的扫描结果
还可以使用代理池技术来绕过,我们可以使用网上免费的代理
总结:
先本地测试安全狗-默认拦截-数据包问题 (未开cc)
先本地测试安全狗-绕过拦截-更改提交方式或模拟用户
先本地测试安全狗-默认拦截-数据包问题 (开cc)
先本地测试安全狗-绕过拦截-延时或代理池或爬虫引擎
Aliyun_os-默认拦截机制分析绕过-简要界面
阿里云上也是有一些简单的防护,阿里云上面也是有付费产品和免费产品,一般你购买阿里云产品,上面也有一些免费的防护,然后他还有一个付费的防护,付费的其实也是大同小异,无非就是多了个实时监控,通知一些攻击情况
阿里云服务器扫着扫着然后就访问不了了,有时候用户访问网站,发现网站响应慢,然后刷新了几下,就被封了,阿里云的检测相当苛刻,被封一次就是1个小时了,重启服务器、在阿里云平台上进行操作都打开不了,这个规则是可能放在阿里自身内部产品里面进行控制
这个WAF绕过没有什么检测机制,没有什么界面,你也不知道它是一个什么检测机制,总的来说就是请求速度的问题,只能采用代理池或延时绕过
速度过快,阿里云该拦截还是拦截,不管你是不是搜索引擎爬虫
阿里云要延迟3秒,延迟两秒也会被封掉
BT(防火墙插件)-默认拦截机制分析绕过-简要界面
宝塔里面是有付费的插件,免费的宝塔基本上很多防护都没有,不是说他买了这些插件,他就有这些东西,他得启动起来,这些插件还是比较贵的
宝塔默认不买插件的话,有些自带的防护,但是防护的不太严谨,基本上就等同于没防护,但是有了这些收费的产品就不一样了
宝塔-爬虫未知,延迟可以,代理池也可以
发现你在探针敏感目录的东西,就直接拦截
所以我们在扫描字典里面还要再优化一下,像里面不能有bak,但是如果字典里面不能有bak,那我们扫描它还有什么意义,我们大部分扫描就是扫描它的备份文件,所以实际上有些东西还是受到了限制
我们扫描的意义就是想扫这些东西,而WAF不让我扫,我们可以采取两种方式,字典重写,把带有敏感的目录错开行写;字典变异,加上.或者空格,例如index.php.bak.或index.php.bak%20,不会影响到扫描结果
我们发现一个sql注入,我们要绕过,我们要想到免费的WAF,一个是宝塔上面还有一个套层,还有阿里云的一个套层,我们要满足所有的WAF,真的机会很小,基本上就不用看了;看上去是说WAF绕过,网上文章各种各样的绕过,牛逼的很,自己一搞,一个用的也没有,因为实战环境不会跟我们靶场环境一样,实战环境搞个两三个,只能给虐
用人工智能去识别和攻击的也有
黑盒测试发现漏洞的概率太小了
一个服务器上可能使用多款WAF,我们要绕过就要绕过所有的WAF,很多东西都会有其它因素来影响到你,你能把影响因素找到,然后进行绕过,这才行,否则的话没用,我们进行WAF绕过不仅看产品,有时候服务器上面的安全你也要考虑到,比如像阿里云就是一个很特殊的情况
涉及资源:
宝塔官网:https://www.bt.cn/
安全狗官网:http://free.safedog.cn/website_safedog.html
各大搜索引擎的User-Agent:https://www.cnblogs.com/iack/p/3557371.html