SQL注入过waf

Posted 网络安全学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入过waf相关的知识,希望对你有一定的参考价值。

0x00 WAF简介

WAF(Web Application Firewall)的中文名称叫做“Web应用防火墙”,利用国际上公认的一种说法,WAF的定义是这样的:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。通过从上面对WAF的定义中,我们可以很清晰的了解到,WAF是一种工作在应用层的、通过特定的安全策略来专门为Web应用提供安全防护的产品。

0x01 WAF种类

根据不同的分类方法,WAF可分为许多种。从产品形态上来划分,WAF主要分为以下三大类:

1.1硬件设备类

目前安全市场上,大多数的WAF都属于此类。它们以一个独立的硬件设备的形态存在,支持以多种方式(如透明桥接模式、旁路模式、反向代理等)部署到网络中为后端的Web应用提供安全防护。相对于软件产品类的WAF,这类产品的优点是性能好、功能全面、支持多种模式部署等,但它的价格通常比较贵。国内的绿盟、安恒、启明星辰等厂商生产的WAF都属于此类。

1.2软件产品类

这种类型的WAF采用纯软件的方式实现,特点是安装简单,容易使用,成本低。但它的缺点也是显而易见的,因为它必须安装在Web应用服务器上,除了性能受到限制外,还可能会存在兼容性、安全等问题。这类WAF的代表有ModSecurity、Naxsi、网站安全狗等。

1.3基于云的WAF

随着云计算技术的快速发展,使得其于云的WAF实现成为可能。国内创新工场旗下的安全宝、360的网站宝是这类WAF的典型代表。它的优点是快速部署、零维护、成本低。对于中、小型的企业和个人站长是很有吸引力的。

1.4 WAF拦截效果

SQL注入过waf
SQL注入过waf
SQL注入过waf SQL注入过waf

0x02 SQL注入过WAF

在渗透测试过程中,遇到各类各样的WAF是很正常的,面对这只拦路虎我们是惹不起的,只能想办法绕过去的样子,本次简介介绍一些常用的绕WAF技巧
SQL注入过waf

2.1 大小写混合

早期WAF防火墙正则匹配区分大小写,可以通锅混合大小写字母绕过检测,这是最简单的绕过技术。
举例:
example.com/index.php?id=-1 uNIoN seLecT 1,2,3

2.2 编码绕过

如果WAF使用关键字匹配检测SQL语句,可以尝试使用编码代替原有字符,例如SELECT可以使用%53ELECT代替,针对部分WAF会尝试自动解码,可以使用双重编码绕过,即%25%35%33%45%4C%45%43%54

2.3 双写绕过

该技巧主要针对的是SQL清洗(杀毒)程序,部分防护程序检测到关键字后并不会直接拦截请求,而是将关键字直接删除然后发送给后继程序,通过该特性,可以通过双写关键词进行绕过。
例如,正常语句:
example.com?id=1 and 1

绕过语句:
example.com?id=1 ANandD 1

程序删除and后,剩余的AND自动拼接为新的关键词进而达到绕过的目的

2.4 差异请求绕过

由于管理员配置错误或开发人员考虑不到位,当同一个API支持多种请求时,可能存在部分请求可以绕过,成为漏网之鱼,例如:
GET http://example.com/token=xxx 会被检测POST http://example.com/token=xxx 不会被检测

2.5 畸形请求绕过

和2.4类似,不同点在于使用异常请求方法,例如SQWF等

2.6 垃圾数据绕过

部分WAF只能检测固定大小的数据包内容,此时就可以通过添加大量的无用的垃圾字符绕过检测,通常使用大量的垃圾字符对,例如:
正常请求:xxx.php?id=1
添加大量垃圾字符对:
xxx.php?a=bb&b=cc&c=dd………..&id=1

2.7 多重参数绕过

当请求参数列表中存在多个相同的参数,WAF与真实的后端程序在处理方式上可能存在差异,此时可以尝试添加多个参数,通过切换位置尝试绕过限制
例如,原请求:
xxx.php?id=1&name=admin&pwd=123

尝试放在末尾:
xxx.php?id=1&namem=admin&pwd=123&id=1 UNION SELECT

尝试放在首部:
xxx.php?id=1 UNION SELECT&namem=admin&pwd=123&id=1

2.8 分块传输绕过

分块传输编码是HTTP的一种数据传输机制,允许将消息体分成若干块进行发送。当数据请求包中header信息存在Transfer-Encoding: chunked,就代表这个消息体采用了分块编码传输。
利用该特性,可以将攻击payload进行拆分然后分块发送已达到绕过的目的

2.9 冷门函数/字符/运算符绕过

原理很简单,常用的WAF都收录了,不常用(骚操作)的往往可以直接绕过
Substring使用mid、lpad代替
Limit 0,1使用limit 1 offset 0形式代替
And使用&&代替
Or使用||代替
=使用like代替
Sleep使用benchmark代替

2.10 利用程序本身缺陷绕过

该部分比较宽泛,共同的特点是目标系统本身包含了可以协助我们进行WAF绕过的机制,例如存在加密、允许使用字符代替单词等。本次介绍一下利用加密绕过。
如果目标系统所有的参数都使用加密算法,云WAF将变得苍白无力,比较WAF对着一堆ABCDEFG也看不出什么所以然来。
如果目标系统部分功能存在加密,我们可以利用该部分传输加密后的攻击代码到后台也可以达到绕过云WAF的目的。

0x03 END

以上大部分方法基本都被各安全厂商拉黑了,但是部分方法在实战中仍然具备攻击力,即便安全厂商封杀现有的所有方法,只要掌握了绕过思路和方法,发现并绕过WAF也只是迟早的事。




往期推荐





以上是关于SQL注入过waf的主要内容,如果未能解决你的问题,请参考以下文章

WAF绕过—SQL注入

SQL注入--SQLMap过WAF--tamper模块使用

SQL注入绕WAF总结

Bypass X-WAF SQL注入防御(多姿势)

SQL注入最易懂教程(12.WAF绕过原理)

记一次Fuzz绕WAF实现SQL 注入