SQL注入之WAF绕过技巧

今天继续给大家介绍渗透测试相关知识,本文主要内容是SQL注入之WAF绕过技巧。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、数据层面绕过WAF

对WAF的绕过,可以考虑从数据方面,构造能够绕过WAF过滤规则的payload,主要思路有以下几种:
1、大小写绕过
即采取混用大小写的方式来绕过WAF。
2、编码绕过
即采取合理的编码来绕过WAF。
3、等价函数绕过
即避免使用WAF过滤的函数,选择与该函数作用相同的函数来进行绕过。
4、特殊符号绕过
即采用特殊的符号来绕过WAF。
5、反序列化绕过
即采取反序列化的方式来绕过WAF
6、注释符混用绕过
即采取使用注释符的方式来绕过WAF。
7、加解密绕过
即采用加密和解密的方式来绕过WAF。

二、方式层面绕过WAF

除了在数据层面绕过之外,我们还可以在方式上绕过WAF,最常见的即更改提交方式。
我们可以看到安全狗的防护页面(默认)如下所示:
在这里插入图片描述
注意看上图中的检测项目,有一些项目是检测只URL,有一些项目同时检测了POST提交的内容以及COOKIE提交的内容,但是基本上所有的项目都不会检测HTTP头。
这是因为加快检测速度,避免在WAF处出现网络瓶颈,同时也避免误报。事实上,有些网站只会采用默认的设定,根本不会刻意的去修改上述项目。因此,我们可以采取更换参数提交方式的方法来绕过WAF。

三、其他方式绕过WAF

除了上述两大类方法外,我们还会采取一些其他的特殊方式来绕过WAF,主要有以下四种:
1、Fuzz模糊测试
所谓Fuzz模糊测试,即利用工具,进行大规模的批量测试,以测试WAF过滤规则,并查验可以绕过的组合。
2、根据数据库的独特性质
有时,我们可以利用一些数据库的特殊性质,来进行WAF的绕过,这些数据库的特殊性质通常是WAF没有涉及或者忽略的。
例如,对于MySQL数据库而言,我们可以执行命令:

select database();

来查询当前的数据库,而MySQL数据库的特性使得我们可以执行下列语句,得到同样的效果:

select database/**/();

相关命令执行结果如下所示:
在这里插入图片描述
3、垃圾数据溢出
一般而言,WAF为了检测效率,只会检测数据包固定长度的内容,安全狗对URL长度的检测上线默认如下所示:
在这里插入图片描述
这时,我们就可以考虑,故意设计非常大的数据包(在这里是URL),把payload放到数据库的最后面,以绕过安全狗的检测。
当然,这要结合服务器的性能来设定,如果过长,可能导致服务器不响应,如下所示:
在这里插入图片描述
4、http参数污染
除了上述三种方法外,http参数污染也是一种WAF绕过的方法。所谓http参数污染,即我们多次提交同一个参数,或者是采用不同的方式提交同一参数。例如,假设我们要测试参数id的SQL注入点,但是WAF对其做了防护,这时我们可以考虑上传多个id参数,或者是采用GET和POST的方式同时上传id参数。
对于这样多个id参数的情景,不同的服务器软件会有不同的处理,我们可以借助WAF处理和服务器软件处理方式的不同,来实现WAF的绕过。

四、写在最后

最后,对上述内容进行说明。
以上的内容,仅仅是绕过WAF的思路,实际上,很多初学者总是妄图看了谋篇文章,学了某项技术或者说使用某个软件脚本,能够起到立竿见影的效果,绕过WAF。这是非常不现实的,换句话说,一旦这样的技术、方法或者脚本软件出现,相关WAF厂商也会在第一时间采取措施。
因此,我们最关键的是学习信息安全思维,针对不同的WAF,灵活分析,并最终达到我们想要的效果。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/126248166