WAF使用及相关注意事项

什么是WAF?

WEB应用防火墙 (Web Application Firewall)

定义:通过执行一系列针对HTTP/HTTPS的安全策略来防御对Web应用的攻击。

WAF绕过方法

1. 大小写混合

在规则匹配时只针对了特定大写或特定小写的情况,在实战中可以通过混合大小写的方式进行绕过(现在几乎没有这样的情况),如下所示。

uNion sElEct 1,2,3,4,5

2.URL编码

极少部分的 WAF 不会对普通字符进行 URL 解码,如下所示。union select 1,2,3,4,5 上述命令将被编码为如下所示的命令。

%75%6E%69%6F%6E%20%73%65%6℃%65%63%74%20%31%2℃ %32%2℃%33%2C%34%2C%35

还有一种情况就是 URL 二次编码,WAF 一般只进行一次解码,而如果目标 Wb 系统的代码中进行了额外的 URL 解码,即可进行绕过。

union select 1,2,3,4,5

上述命令将被编码为如下所示的命令。

%2575%256E%2569%256F%256E%2520%2573%2565%256C%2565%2563%2574%2520%2531%252℃%2532%252C%2533%252C %2534%252C%2535

3. 替换关键字

WAF采用替换或者删除select/union这类敏感关键饲的时候,如果只匹配次则很容易进行绕过。

union select 1,2,3,4,5

上述命令将转换为如下所示的命令。

unuionion selselectect 1,2,3,4,5

4. 使用注释

注释在截断 SQL 语句中用得比较多,在绕过 WAF 时主要使用其替代空格(/*任意内容*),适用于检测过程中没有识别注释或替换掉了注释的 WAF。

Union select 1,2,3,4,5

上述命令将转换为如下所示的命令。

union/*2333*/select/*aaaa*/1,2,3,4,5

还可以使用内联注释尝试绕过 WAF 的检测。

5. 多参数请求拆分

对于多个参数拼接到同一条$QL 语句中的情况,可以将注入语句分割插入。例如请求 URL 时,GET 参数为如下格式。

a= [input1] &b= [input2]

将 GET 的参数 a 和参数 b 拼接到 SQL 语句中

and a= [input1] and b= [input2]

这时就可以将注入语句进行拆分,如下所示。

a=union/*&b=*/select 1,2,3,4

最终将参数 a 和参数 b 拼接,得到的 SQL 语句如下所示。

 and a=union /*and b=*/select 1,2,3,4

6.HTTP 参数污染

HTTP 参数污染是指当同一参数出现多次,不同的中间件会解析为不同的结果,具体如表所示(例子以参数 color=-red&color=-blue 为例)

在上述提到的中间线中,川 S 比较容易利用,可以直接分割带逗号的 SQL 语句。在其余的中间线中,如果 WF 只检测了同参数名中的第一个或最后一个,并且中间件特性正好取与 WAF 相反的参数,则可成功绕过。下面以 IS 为例,一般的 SQL 注入语句如下所示。

Inject=union select 1,2,3,4

将 SQL 注入语句转换为以下格式。

Inject=union/*&inject=*/select/*&inject=*/1&inject=2&inject=3&inject=4

最终在IIS中读入的参数值将如下所示。

Inject=union/*,*/select/*,*/1,2,3,4

7. 生僻函数

使用生僻函数替代常见的函数,例如在报错注入中使用卵 oy9on()函数替换常用的 updatexml()函数,如下所示。

SELECT polygon  ((select*from  (select*from  (select@@version) f) X));

8. 寻找网站源站IP

对于具有云WAF防护的网站而言,只要找到网站的IP地址,然后通过IP访问网

站,就可以绕过云 WAF 的检测。

常见的寻找网站IP的方法有下面这几种。

寻找网站的历史解析记录。

多个不同区域 ping 网站,查看 lP 解析的结果。

找网站的二级域名、NS、MX 记录等对应的IP。

订阅网站邮件,查看邮件发送方的IP。

9. 注入参数到 cookies中

某些程序员在代码中使用$REQUEST获取参数,而$REQUEST会依次从GET/POST/cookie中获取参数,如果WAF 只检测了GET/POST 而没有检测 cookie,可以将注入语句放入cookie中进行绕过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值