- WAF绕过原理之Fuzz绕过
- 前言
- 一、什么是Fuzz
- 二、利用Fuzz绕过WAF获取数据库信息
- 1.Fuzz绕过方法
- 2.利用Fuzz绕过WAF获取数据库信息
- 总结
在讲fuzz与sql注入结合绕waf之前我们先来讲讲什么是fuzz,fuzz其实就是一种对请求参数的模糊测试,简单来说就是对一个接口的某个参数或多个参数用自定义的内容进行批量提交,根据接口返回内容来判断自定义内容参数对接口的影响。
首先先说waf防御的原理,简单来说waf就是解析http请求,检测http请求中的参数是否存在恶意的攻击行为,如果请求中的参数和waf中的规则库所匹配,那么waf则判断此条请求为攻击行为并进行阻断,反之则放行。
常见的sql注入绕过waf有两种方式,一种是利用waf可能存在的http协议解析缺陷来绕过waf,另外一种是利用各种方式来包装sql注入语句进行混淆来绕过waf的规则库。
FUZZ与sql注入waf绕过结合
首先来说说造轮子的原理,fuzz是对某个接口的一个参数或多个参数进行自定义参数批量请求的模糊测试,sql注入的漏洞成因是某个接口中后端没有对某个参数或多个参数的内容进行过滤并将参数内容直接合并到sql语句中进行查询,waf的防御原理是解析http请求,对里面每个参数的内容根据规则库进行匹配,那么通过fuzz结合sql注入对waf进行绕过的原理也就显而易见了。首先我们生成大量经过混淆的sql注入语句,然后填入对应参数中,进行批量发送,根据返回内容进行判断waf是否对这种混淆方式进行拦截,如果拦截则判断这种混淆方式不可取,如果不拦截则可以用这种混淆的方式对所有的sql注入语句进行包装。
然后用burp生成fuzz字典,进行爆破就可以了
二、利用Fuzz绕过WAF获取数据库信息 1.Fuzz绕过方法这里我们下载网站安全狗作为WAF,用sqli-labs实验第一关进行测试
首先我们输入
http://192.168.222.4/sqli-labs/Less-1/?id=1’
发现报错,进行SQL注入试试,输入
http://192.168.222.4/sqli-labs/Less-1/?id=1’ and ‘1’=‘1
发现WAF进行了拦截,无法进行注入,这时我们就要借助burp进行抓包,进行Fuzz绕过。
这时我们发送到intruder进行爆破,这里我补充一些知识,如何进行设置参数爆破,
我们可以对空格进行转义,空格有很多的编码表现形式,(’ '==%20)
像我们黑盒测试绕过方法中有对空格进行转义的字符,可以利用构造特殊字符进行爆破,这里我们利用/* xxx*/进行实验。
http://192.168.222.4/sqli-labs/Less-1/?id=1%27%20and%20%271%27=%271
我们就可以将%20进行转换为/* a*/,设置参数,设置字符a1!%(/),和payload
设置线程为20
进行攻击
这里返回不一样的数据包,再查看一下图片,看一下render
发现返回了用户信息,绕过成功。
这里同样可以通过查询语句注入,在进行burp爆破就可以了,找不同的数据包就可以成功绕过,查看数据库信息了。
本次实验是对Fuzz绕过WAF的一次经典实例,借助burp工具进行抓包和攻击,得到不同的数据包,查看返回结果,进行绕过WAF获取用户信息的一次实战练习。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)