一、WAF簡(jiǎn)介
WAF(WebApplicationFirewall)也稱:網(wǎng)站應(yīng)用級(jí)入侵防御系統(tǒng)那婉,是通過(guò)執(zhí)行一系列針對(duì)HTTP/HTTPS的安全策略來(lái)專門(mén)為Web應(yīng)用提供保護(hù)的一款產(chǎn)品残黑。
1.工作原理
對(duì)web應(yīng)用程序客戶端發(fā)出的流量進(jìn)行內(nèi)容檢測(cè)和驗(yàn)證,檢測(cè)其安全性與合法性,來(lái)屏蔽常見(jiàn)的網(wǎng)站漏洞攻擊俗冻,如SQL注入,XML注入梢夯、XSS等言疗。
2.WAF分類
軟件型WAF
以軟件形式裝在所保護(hù)的服務(wù)器上的WAF,由于安裝在服務(wù)器上颂砸,所以可以接觸到服務(wù)器上的文件噪奄,直接檢測(cè)服務(wù)器上是否存在WebShell是否有文件被創(chuàng)建等。代表性的產(chǎn)品有:安全狗人乓,D盾勤篮。
硬件型WAF
以硬件形式部署再鏈路中,支持多種部署方式色罚,當(dāng)串聯(lián)到鏈路中時(shí)可以攔截惡意流量碰缔,在旁路監(jiān)聽(tīng)模式時(shí)只記錄攻擊不進(jìn)行攔截。代表性的產(chǎn)品有:nsfocus戳护, imperva硬件金抡。
云WAF
一般以反向代理的形式工作,通過(guò)配置NS記錄或CNAME記錄腌且,使對(duì)網(wǎng)站的請(qǐng)求報(bào)文優(yōu)先經(jīng)過(guò)WAF主機(jī)梗肝,經(jīng)過(guò)WAF主機(jī)過(guò)濾后,將認(rèn)為無(wú)害的請(qǐng)求報(bào)文再發(fā)生給實(shí)際網(wǎng)站服務(wù)器進(jìn)行請(qǐng)求铺董,可以說(shuō)是戴防護(hù)功能的CDN巫击。代表性的產(chǎn)品有:百度云加速,阿里云云盾精续。
網(wǎng)站系統(tǒng)內(nèi)置的WAF
網(wǎng)站系統(tǒng)內(nèi)置的WAF也可以說(shuō)是網(wǎng)站系統(tǒng)中內(nèi)置的過(guò)濾坝锰,直接鑲嵌在代碼中,相對(duì)來(lái)說(shuō)自由度高一般有以下這幾種情況重付。
輸入?yún)?shù)強(qiáng)制類型轉(zhuǎn)換(intval等)顷级。
輸入?yún)?shù)合法性檢測(cè)。
關(guān)鍵函數(shù)執(zhí)行(SQL執(zhí)行确垫、頁(yè)面顯示愕把、命令執(zhí)行等)前,對(duì)經(jīng)過(guò)流程的輸入進(jìn)行檢測(cè)森爽。
對(duì)輸入的數(shù)據(jù)進(jìn)行替換過(guò)濾后再繼續(xù)執(zhí)行代碼流程(轉(zhuǎn)義/替換掉特殊字符等)。
網(wǎng)站系統(tǒng)內(nèi)置的WAF與業(yè)務(wù)更加鍥合嚣镜,在對(duì)安全與業(yè)務(wù)都比較了解的情況下爬迟,可以更少的收到誤報(bào)與漏報(bào)。
二菊匿、WAF繞過(guò)方法(以注入為主)
1.大小寫(xiě)繞過(guò)
比如waf攔截union select付呕,可以構(gòu)造Union sElEcT來(lái)繞過(guò)计福。
2.特殊字符替換空格或注釋繞過(guò)
可以用注釋來(lái)替代空格進(jìn)行繞過(guò),有些waf在檢測(cè)時(shí)不會(huì)識(shí)別注釋或者將注釋替換掉徽职,如sqlserver中可以用/**/代替空格象颖,在mysql中 %0a 是換行,可以代替空格姆钉。
如union select 1,2可轉(zhuǎn)換為union/*xx*/select/*xx*/1,2
3.編碼繞過(guò)
少數(shù)waf不會(huì)對(duì)普通字符進(jìn)行URL解碼,還有一部分waf只會(huì)進(jìn)行一次url解碼说订,所以可以對(duì)payload進(jìn)行二次url編碼。常見(jiàn)的SQL編碼有unicode潮瓶、HEX陶冷、URL、ascll毯辅、base64等埂伦,XSS編碼有:HTML、URL思恐、ASCII沾谜、JS編碼、base64等等胀莹。
如?union select 1,2可對(duì)其進(jìn)行url編碼后進(jìn)行繞過(guò)waf基跑。
4.關(guān)鍵字替換繞過(guò)
有些WAF會(huì)刪除或者替換關(guān)鍵字,如遇到select union等敏感字詞嗜逻。
如?union select 1,2,3可替換為ununionion selselectect 1,,2,3
5.多請(qǐng)求拆分繞過(guò)
對(duì)于多個(gè)參數(shù)的語(yǔ)句涩僻,可以將注入語(yǔ)句分割插入。
如這樣的請(qǐng)求:?a=[inputa]&b=[inputb]可將參數(shù)a和b拼接如:and a=[inputa] and b=[inputb]
6.利用cookies繞過(guò)
對(duì)于用了$_REQUEST來(lái)獲取參數(shù)的網(wǎng)站可以嘗試將payload放在cookie中進(jìn)行繞過(guò)REQUEST會(huì)依次從GET POST cookie中獲取參數(shù)栈顷,如果WAF只檢測(cè)了GET/POST而沒(méi)有檢測(cè)cookie逆日,可以將語(yǔ)句放在cookie中進(jìn)行繞過(guò)。
7.云WAF繞過(guò)之尋找網(wǎng)站源ip
采用云WAF的網(wǎng)站可以尋找網(wǎng)站真實(shí)ip來(lái)繞過(guò)云WAF的檢測(cè)萄凤。
常見(jiàn)方法有:
采用多地ping的方法查看ip地址解析分析真實(shí)ip
在線ping網(wǎng)站有:
http://ping.chinaz.com/
http://ping.aizhan.com/
http://ce.cloud.#/
使用 nslookup 進(jìn)行檢測(cè)室抽,原理同上。
尋找網(wǎng)站歷史解析記錄靡努。
找網(wǎng)站的二級(jí)域名坪圾、NS、MX記錄等對(duì)應(yīng)的ip惑朦。
訂閱網(wǎng)站郵件兽泄,查看郵件發(fā)送方的ip。