WEB安全-渗透测试-waf绕过01
waf
Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
判断一个网站有无waf,可用sqlmap,wafw00f等工具,也可手工探测
这里演示wafw00f探测,kali中自带
wafw00f 网站
探测显示百度存在waf
waf绕过
WAF拦截会出现在安全测试的各个层面,掌握各个层面的分析和绕过技术最为关键
本文主要讲述以下四种环境下的waf绕过
- Safedog-默认拦截机制分析绕过-未开CC
- Safedog-默认拦截机制分析绕过-开启CC
- Aliyun_os-默认拦截机制分析绕过-简要界面
- BT(防火墙插件)-默认拦截机制分析绕过-简要界面
使用WebPathBrute,御剑等后台扫描工具对网站进行扫描
Safedog-未开CC
扫描结果:出现误报,全部200状态码
原因:浏览器采用get方法,工具扫描采用head方法
绕过方法:更改提交方式为get方法或模拟用户
Safedog-开启CC
扫描结果:频繁访问(访问频率过快,绝对是工具),触发安全狗防护机制,被拦截
绕过方法:延时或代理池或爬虫引擎。
-
延时
可开启延时扫描,慢速扫描,缺点是速度过慢,一般是3秒。
-
2.2 代理池
网上搜索代理池,写python脚本,添加代理池。确定是WAF可能开启了防代理,无法绕过。 -
2.3 爬虫引擎
可在软件中自定义添加爬虫引擎头部(但是扫描不出现结果)
各个搜索引擎的User-Agent
可使用脚本自定义user-agent进行访问
import requests
import time
headers = {
'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')://php_b.txt为扫描网站文件字典
url = "http://127.0.0.1/pikachu"
paths = paths.replace('\n', '')
urls = url + paths
proxy = {
'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)
Aliyun_os-默认拦截机制
扫描结果:对部署在阿里云上的网站进行目录扫描时,网站无法打开,大约1个小时后才能重新打开,重启服务器也不能使网站重新打开,猜测这是因为阿里云自己有一套防护体系。
绕过方法:无法模拟搜索引擎爬虫绕过,只能采用延时或代理池
BT-默认拦截机制
扫描结果:请求过快,网站无法打开
对于恶意请求,比如宝塔检测到用户频繁请求index.php.bak等备份文件,即判断为恶意请求,拦截。对于这种拦截,绕过方法为字典重写
绕过方法:爬虫未知,延时可以,代理池可以
Aliyun_os+safedog+BT
绕过方法:延时或代理池
在实战中,waf绕过一般都很难......
声明:本文只供参考学习,如有误导请纠正