僅供學習交流如果你有更好的思路可以一起分享,想一起學習的進我主頁
首先WAF(Web Application Firewall),俗稱Web應用防火牆,主要的目的實際上是用來過濾不正常或者惡意請求包,以及為服務器打上臨時補丁的作用。
1、雲waf:
在配置雲waf時(通常是CDN包含的waf),DNS需要解析到CDN的ip上去,在請求uri時,數據包就會先經過雲waf進行檢測,如果通過再將數據包流給主機。常見產品:阿里雲防護,騰訊雲防護,創宇雲之類等。
2、主機防護軟件:
在主機上預先安裝了這種防護軟件,和監聽web端口的流量是否有惡意的,所以這種從功能上講較為全面。這里再插一嘴,mod_security、ngx-lua-waf這類開源waf雖然看起來不錯,但是有個弱點就是升級的成本會高一些。常見產品:雲鎖,安全狗之類產品。
3、硬件WAF:
硬件WAF可以理解為流量代理,一般部署方式都需要流量經過它,針對數據包進行拆包->清洗->規則命中->放行/丟棄,當然現在更有甚者,給WAF上了一個頭腦,采用深度學習,語義分析等操作,來減少本身WAF因為單調的規則導致可能被繞過的問題。常見產品:各產品鐵盒子waf
為什么WAF可被繞過
-
業務與安全存在一定的沖突。
-
WAF無法100%覆蓋語言,中間件,數據庫的特性。
-
WAF本身漏洞。
1、Web容器的特性
特殊的百分號
在 IIS+ASP 的環境中,對於URL請求的參數值中的%
,如果和后面的字符構成的字符串在 URL編碼表 之外,ASP腳本處理時會將其忽略。
但是waf 拿在包后會對url 比如:id=1 union all se%lect 1,2,3,4 fro%m adm%in 此時waf因為 % 的分隔,無法檢測出關鍵字 select from 等。
但是因為IIS的特性,最后在服務器上解析的時候, id 獲取的實際參數就變為1 union all select 1,2,3,4 from admin
,從而繞過了waf。
要記住的是這個asp+iis 特性只對 asp 有效
2、 Web應用層的問題
編碼繞過
通過一般WAF會針對傳來的數據包中帶有的編碼進行一次解碼工作,如果WAF不能進行有效解碼還原攻擊向量,可能導致繞過,常見編碼如URL編碼、unicode編碼(IIS)、寬字節編碼等。例如我們用 url 的二次編碼,而經過一次 url解碼的之后,WAF可能無法識別出它是惡意的數據,當把該惡意數據放行到Web服務器上時,Web服務器會再一次解碼,最后導致了WAF繞過的結果。
3、WAF自身的問題
白名單機制
WAF存在某些機制,不處理和攔截白名單中的請求數據:
1、指定IP或IP段的數據。
2、來自於搜索引擎爬蟲的訪問數據。
3、其他特征的數據。