概述
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的那些事所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复