到底什么是WAF??

前言:

本文将简单的介绍什么是WAF,如何判断WAF,如何简单的绕过WAF

1.什么是WAF
Web Application Firewall(web应用防火墙),一种公认的说法是“web应用防火墙通过执行一系列针对HTTP/HTTPS的安全策略来专门为web应用提供保护的一款产品。
基本可以分为以下4种

  1. 软件型WAF
    以软件的形式安装在服务器上面,可以接触到服务器上的文件,因此就可以检测服务器上是否有webshell,是否有文件被创建等。

  2. 硬件型WAF
    以硬件形式部署在链路中,支持多种部署方式。当串联到链路上时可以拦截恶意流量,在旁路监听模式时只记录攻击但是不进行拦截。

  3. 云 WAF
    一般以反向代理的形式工作,通过配置后,使对网站的请求数据优先经过WAF主机,在WAF主机对数据进行过滤后再传给服务器

  4. 网站内置的WAF
    就是来自网站内部的过滤,直接出现在网站代码中,比如说对输入的参数强制类转换啊,对输入的参数进行敏感词检测啊什么的

2.如何去判断一个网站是否有WAF

  1. 使用sqlmap
    sqlmap自带有WAF识别模块可以识别出WAF的种类,不过如果目标的WAF并没有什么特征,sqlmap只能识别出类型为Generic。
    详细的识别规则在sqlmap的WAF目录下,在该目录下也可以自定义waf的识别规则
sqlmap.py -u "http://xxx.com" --identify-waf--batch
  1. 手工判断
    直接在相应的URL后面加上最基础的测试语句,并放在一个不存在的参数名中,因为选用的参数是不存在的,不会对网站本身执行有影响,所以正常情况应该显示正常,但是如果访问被拦截,就说明存在WAF

3.一些绕过WAF的小手段

  1. 大小写混合(现在几乎没用)
    在过滤规则里只针对了特定的大写或者小写的情况下,采用大小写混合就可以绕过规则
栗如:uNioN sElEct
  1. URL编码
    WAF一般只会进行一次URL解码,而我们只要对字符进行URL编码两次就可以绕过
  2. 替换关键字
    当过滤规则里采用了替换或者删除敏感词,且只匹配一次,那么就可以很容易的绕过
    栗如:
    selselectect 在过滤掉select之后就会剩下sel和ect,合起来就是select。
  3. 使用注释
    即使用注释替代空格
  4. 生僻函数
    使用生僻的函数代替常用的函数
  5. 寻找网站源ip
    针对具有云WAF的网站,只要通过源IP访问网站即可直接绕过云WAF
  6. 将注入语句放入cookie中
    当WAF只针对POST和GET时,而网页代码里又使用的是$_Requests来获取参数,就可以将注入语句写入cookie中

你可能感兴趣的:(#,渗透,笔记)