WAF绕过主要集中在信息收集,漏洞发现,漏洞利用,权限控制四个阶段。
1、什么是WAF?
Web Application Firewall(web应用防火墙),一种公认的说法是“web应用防火墙通过执行一系列针对HTTP/HTTPS的安全策略来专门为web应用提供保护的一款产品。
基本可以分为以下4种:
软件型WAF
以软件的形式安装在服务器上面,可以接触到服务器上的文件,因此就可以检测服务器上是否有webshell,是否有文件被创建等。
硬件型WAF
以硬件形式部署在链路中,支持多种部署方式。当串联到链路上时可以拦截恶意流量,在旁路监听模式时只记录攻击但是不进行拦截。
云 WAF
一般以反向代理的形式工作,通过配置后,使对网站的请求数据优先经过WAF主机,在WAF主机对数据进行过滤后再传给服务器。
网站内置的WAF
就是来自网站内部的过滤,直接出现在网站代码中,比如说对输入的参数强制类转换啊,对输入的参数进行敏感词检测啊什么的。
2、如何判断WAF?
Wafw00f识别工具:https://github.com/EnableSecurity/wafw00f
看图识别:https://mp.weixin.qq.com/s/3uUZKryCufQ_HcuMc8ZgQQ
其他项目脚本平台。
3、目前有哪些常见WAF产品?
参考:https://blog.csdn.net/w2sft/article/details/104533082/
① 硬件型
硬件型WAF以一个独立的硬件设备的形态存在,支持以多种方式(如透明桥接模式、旁路模式、反向代理等)部署到网络中为后端的Web应用提供安全防护,是最为传统的WAF型态,在受访企业中部署占比为35.2%。相对于软件产品类的WAF,这类产品的优点是性能好、功能全面、支持多种模式部署等,但它的价格通常比较贵。国内的绿盟、安恒、启明星辰等老牌厂商旗下的WAF都属于此类。
② 软件型
这种类型的WAF采用纯软件的方式实现,特点是安装简单,容易使用,成本低。但它的缺点也是显而易见的,除了性能受到限制外,还可能会存在兼容性、安全等问题。这类WAF的代表有ModSecurity、Naxsi、ShareWAF、安全狗等。
③ 云WAF
随着云计算技术的快速发展,使得基于云的WAF实现成为可能,在本次调查中占比甚至超过了传统的硬件WAF跃升为第一位,达到39.4%。阿里云、腾讯云、深信服云WAF、Imperva WAF是这类WAF的典型代表。
4、如何对有waf的目标做信息收集?
信息收集常见检测:
1、脚本或工具速度流量快
2、脚本或工具的指纹被识别
3、脚本或工具的检测Payload
信息收集常见方法:
1、延迟:解决请求过快封IP的情况
2、代理池:在确保速度的情况下解决请求过快封IP的拦截
3、白名单:模拟白名单模拟WAF授权测试,解决速度及测试拦截
4、模拟用户:模拟真实用户数据包请求探针,解决WAF指纹识别
使用被动扫描-黑暗引擎&三方接口
waf会对入口 出口进行检测,当我们主动扫描时会被拦截。所以在目标有waf的情况下可以使用黑暗引擎和第三方接口做信息收集。
黑暗引擎:Fofa Quake Shodan zoomeye 0.zone等
其他接口:https://forum.ywhack.com/bountytips.php?getinfo
演示:目录扫描-利用waf爬虫白名单绕过拦截
扫描工具7kbscan:https://github.com/7kbstorm/7kbscan-WebPathBrute/releases
1.启动工具对目标进行目录扫描,发现返回状态码全部是200
尝试访问网站,结果提示被防火墙拦截
2.判断是什么waf:
根据回显的防火墙样式我们就可以
看图识waf:https://mp.weixin.qq.com/s/3uUZKryCufQ_HcuMc8ZgQQ
对比得出目标使用的是安全狗:
3.因为安全狗等大多数waf都会默认设置爬虫的UA头白名单,所以就可以伪造爬虫的UA头绕过waf拦截,实现目录扫描。
获取爬虫UA头:http://www.yonghengzy.cn/blog/33847.html
等待一段时间,等目标网站解开我们的ip封印后更改UA头为百度爬虫的UA头,再次开启扫描,成功获取网站目录信息。
再次访问网站也显示正常
waf有时候还会设置检测工具,所以需要自己写脚本。
演示:目录扫描-利用代理池解决waf拦截问题
代理池:在确保速度的情况下解决请求过快封IP的拦截
在快代理购买一个代理:https://www.kuaidaili.com/cart?t=tps_c
将自己的主机外网ip设置为白名单,这样本机使用代理就不需要输入账户密码
用python写一个目录扫描脚本(随机代理ip)
填写目标地址和代理池信息,运行成功扫描出目标目录信息
Xray工具设置代理池
打开Xray根目录,打开config.yaml文件配置代理
AWVS工具设置代理池
添加目标(Add Targets)保存(save)之后跳转到目标设置(Target Settings) 处配置代理