WAF的介绍判断及绕过分析

文章详细介绍了WAF的工作原理,包括基于规则库匹配和语义引擎分析的两种类型,并提供了手动判断WAF存在的方法。重点讨论了如何通过各种技巧绕过WAF的检测,如SQL注入漏洞的绕过策略,包括大小写混淆、URL编码、替换关键字等。此外,还提到了寻找网站源站IP来规避云WAF的检测以及利用cookies注入等方法。

介绍WAF

网站存在WAF,意味着我们不能使用安全工具对网站进行测试,因为一旦触碰了WAF的规则,轻则丢弃报文,重则拉黑IP。所以,我们需要手动进行WAF的绕过,而绕过WAF前肯定需要对WAF 的工作原理有一定的理解。本文主要从绕过WAF过程中需要注意的角色和点出发,尝试理解它们的运作,构建一个简单的知识框架。

非嵌入型WAF对Web流量的解析完全是靠自身的,而嵌入型WAF拿到的Web数据是已经被解析加工好的。所以非嵌入型的受攻击机面还涉及到其他层面,而嵌入型WAF从Web容器模块型WAF、代码层WAF往下走,其对抗畸形报文、扫操作绕过的能力越来越强。当然,在部署维护成本方面,也是越高的。

WAF判断

1、sqlmap

如果网站有waf,sqlmap会提示

python sqlmap.py -u "https://www.ustc.edu.cn/" --identify-waf --batch

2、手动检测有没有WAF

直接在相应的网站的URL后面加上最基础的测试语句,比如union select 1,2,3%23,并且放入一个不存在的参数aaa

这里被拦截的表现为(增加了无影响的测试语句后):页面无法访问、响应码不同、返回与正常请求网页时不同的结果等。

http://127.0.0.1/1.php?aaa=1 union select 1,2,3%23

WAF的工作原理

WAF(Web Application Firewall) 可以用来屏蔽常见的网站漏洞攻击,如SQL注入,XML注入、XSS等。WAF针对的是应用层而非网络层的入侵,从技术角度应该称之为Web IPS。

WAF的主要难点是对入侵的检测能力,尤其是对Web服务入侵的检测,WAF最大的挑战是识别率。对于已知的攻击方式,可以谈识别率,但是对于未知的攻击手段,WAF是检测不到的。

基于规则库匹配的WAF

目前市面上大多数的WAF都是基于规则的WAF。即WAF对接数据收到的包进行正则匹配过滤,如果正则匹配到与现有漏洞知识库的攻击代码相同,则认为这个恶意代码,从而对于进行阻断。所以,对于基于规则匹配的WAF,需要每天都及时更新最新的漏洞库。

对于这种WAF,它的工作过程是这样的:解析HTTP请求——>匹配规则——>防御动作——>记录日志 

具体实现如下:

解析http请求:协议解析模块
匹配规则:规则检测模块,匹配规则库
防御动作:return 403 或者跳转到自定义界面,或者不返回任何数据,或者拉黑IP
日志记录:记录到elk中

基于语义引擎分析的WAF

一般来说,规则引擎使用的正则规则的描述性比较强,对于强攻击特征的请求,正则规则的防护效果最佳。而当面对一些弱特征的攻击请求(例如XSS特征请求),即便您启用Web应用攻击防护的严格模式,依然可能因无法检测到而存在潜在的安全风险。

例如,可以通过启用Web应用防火墙的大数据深度学习引擎功能,识别并拦截Web应用攻击防护的严格规则无法识别的弱特征攻击请求。在本案例中,以下XSS攻击请求未被Web应用攻击防护规则拦截。

深度学习引擎防护案例

WAF的绕过

从WAF工作的过程我们可以看到,要想绕过WAF,我们只有在 WAF解析HTTP请求 或 WAF匹配规则 两个地方进行绕过。因为第三、四步是WAF匹配到攻击之后的操作,这时候WAF已经检测到攻击了。

以SQL注入漏洞为例

1、大小写混合:uNion sElEct 1,2,3,4,5

2、URL编码,可进行二次URL编码

3、替换关键字,ununionion seselectlect 1,2,3,4,5

4、使用注释,union /*2333*/ select /*aaaa*/1,2,3,4,5   还可使用内联注释

5、多参数请求拆分法,

6、HTTP参数污染

当同一参数出现多次,不同中间件解析成不同的结果。

web应用层参数污染(HPP)漏洞

HPP漏洞,与Web服务器环境、服务端使用的脚本有关。如下是不同Web服务器对于出现多个参数时的选择:

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、注入参数到cookies中

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

参考链接:WAF的工作原理和绕过浅析

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值