绕过手法
测试环境
window server 2003,安全狗v4.0
安全狗默认防护(不开CC流量防护机制)
安全狗配置如下:
使用目录扫描工具进行网站目录扫描
可以看到工具的默认http请求为HEAD请求,且扫出了很多状态码为200的目录
我们进入网站查看
发现扫出的并非为真实存在的目录,从而猜测是被安全狗检测出来了
查看安全狗日志进行验证
更改请求头绕过
根据日志记录的内容我们可以看出来,是因为HEAD请求的原因被拦截了
因此我们更改请求头为GET,其他配置均不改变进行测试
和上面的扫描结果对比,很容易看出这一次的扫描出的200状态码明显少了很多
随便访问一个
可以看到目录是真实的并且依然能够访问,因此也就绕过了安全狗的拦截机制
安全狗默认防护(开启CC流量防护机制)
CC防护简单来说就是检测请求的速度和网络请求来源
配置如下图:
此次扫描直接使用GET请求进行
可以看到扫描出的结果和第一次扫描的结果几乎相同,只是此次的返回长度并不为空
我们访问一下网站进行查看
发现我们已经被ban了ip,即使正常的访问也不能进行
这样的话就只能重启服务器,才能继续进行测试啦
1.使用延时扫描绕过
这一次我们使用延时扫描(由于延时扫描很慢,这里我字节写了一个字典进行测试)
字典中包含服务器上存在和不存在的文件
可以看到这一次返回的结果就正常的多,同样进入网站进行验证
发现我们并没有被安全狗封掉,同时扫除的目录也是真实存在
2.模拟用户请求绕过
这里使用小迪带佬写的python扫描脚本
import requests
import time
headers={
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (compatible; Baiduspider-render/2.0;+http://www.baidu.com/search/spider.html)',
'Sec-Fetch-Dest': 'document',
'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',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-User': '?1',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
'Cookie': 'PHPSESSID=99d6a382f03de62bb8f51ba51e51550f',
}
for paths in open('测试.txt'):
url='http://192.168.58.187/'
paths=paths.replace('\n','')
urls=url+paths
proxy = {
'http': '127.0.0.1:7777'
}
try:
code=requests.get(urls,headers=headers,verify=False).status_code
# time.sleep(3)
print(urls+'|'+str(code))
if code==200 or code==403:
print(urls+'|'+str(code))
except Exception as err:
print('connecting error')
运行脚本看一下结果
可以看到扫描出的结果很正常,而且也并没有被封掉ip
总结
此次的测试只是根据安全狗的防御进行相关的绕过,其他waf的绕过原理和上面总结的基本相同。想要达到最高的效率还是购买代理池来的容易 O(∩_∩)O