WAF的工作原理和繞過淺析
WAF
在實際的滲透測試過程中,經常會碰到網站存在WAF的情況。網站存在WAF,意味著我們不能使用安全工具對網站進行測試,因為一旦觸碰了WAF的規則,輕則丟棄報文,重則拉黑IP。所以,我們需要手動進行WAF的繞過,而繞過WAF前肯定需要對WAF的工作原理有一定的理解。本文主要從繞過WAF過程中需要注意的角色和點出發,嘗試理解它們的運作,構建一個簡單的知識框架。
首先,WAF分為非嵌入型WAF和嵌入型WAF,非嵌入型WAF指的是硬體型WAF、雲WAF、軟體型WAF之類的;而嵌入型WAF指的是網站內建的WAF。非嵌入型WAF對Web流量的解析完全是靠自身的,而嵌入型WAF拿到的Web資料是已經被解析加工好的。所以非嵌入型的受攻擊機面還涉及到其他層面,而嵌入型WAF從Web容器模組型WAF、程式碼層WAF往下走,其對抗畸形報文、掃操作繞過的能力越來越強。當然,在部署維護成本方面,也是越高的。
WAF的判斷
那麼,如何判斷一個網站是否存在WAF呢?可以手動也可以使用sqlmap進行測試。比如現在有一個網站:http://www.test.com
手動檢測有沒有WAF:
手動在域名後面加一個不存在的id引數,並且加上很明顯的sql語句,檢視伺服器的迴應。
http://www.test.com?id=1 union select 1,2,3
Sqlmap檢測有沒有WAF:
如果網站存在WAF,sqlmap會有提示。
python2 sqlmap.py --batch --identify-waf --random-agent -u "http://www.test.com"
WAF的工作原理
WAF(Web Application Firewall) 可以用來遮蔽常見的網站漏洞攻擊,如SQL注入,XML注入、XSS等。WAF針對的是應用層而非網路層的入侵,從技術角度應該稱之為Web IPS。
WAF的主要難點是對入侵的檢測能力,尤其是對Web服務入侵的檢測,WAF最大的挑戰是識別率。對於已知的攻擊方式,可以談識別率,但是對於未知的攻擊手段,WAF是檢測不到的。
基於規則庫匹配的WAF
目前市面上大多數的WAF都是基於規則的WAF。即WAF對接資料收到的包進行正則匹配過濾,如果正則匹配到與現有漏洞知識庫的攻擊程式碼相同,則認為這個惡意程式碼,從而對於進行阻斷。所以,對於基於規則匹配的WAF,需要每天都及時更新最新的漏洞庫。
對於這種WAF,它的工作過程是這樣的:解析HTTP請求——>匹配規則——>防禦動作——>記錄日誌
具體實現如下:
- 解析http請求:協議解析模組
- 匹配規則:規則檢測模組,匹配規則庫
- 防禦動作:return 403 或者跳轉到自定義介面,或者不返回任何資料,或者拉黑IP
- 日誌記錄:記錄到elk中
WAF的繞過
從WAF工作的過程我們可以看到,要想繞過WAF,我們只有在 WAF解析HTTP請求 或 WAF匹配規則 兩個地方進行繞過。因為第三、四步是WAF匹配到攻擊之後的操作,這時候WAF已經檢測到攻擊了。
域名轉換為ip
有些WAF設定的是針對域名的防護,在有些時候,我們可以嘗試將域名改成ip地址有可以繞過WAF的防護。
WAF解析HTTP請求階段繞過
要想在WAF解析HTTP請求階段繞過,首先,我們得了解HTTP報文的各個欄位的含義和伺服器對HTTP報文各欄位的解析。傳送門:一次HTTP請求的過程
分塊編碼(Transfer-Encoding)繞過WAF
有關於HTTP資料的分塊編碼:HTTP協議之分段傳輸與分塊編碼
這種繞過方法利用的是WAF在解析HTTP協議的過程,既然WAF連我們的攻擊程式碼都沒有解析完全,那麼第二步的正則匹配也就匹配不到我們的攻擊程式碼了,自然就可以繞過了。
相關文章:在HTTP協議層面繞過WAF
其他
其他的關於通過構造HTTP協議來繞過WAF,需要攻擊者對 HTTP協議的各欄位構造,各容器對於HTTP協議的解析 都很熟悉。筆者對於HTTP協議也還是停留在比較淺顯的表面,要想更深入的瞭解HTTP協議,可以去檢視官方文件:RFC2616。
WAF匹配規則階段繞過
利用溢量資料繞過WAF
這種繞過方法利用的是通過提交非常大的資料,由於資料量過大,超過了WAF的正則匹配字元,我們的惡意程式碼就不經過WAF的正則匹配了,因此我們的惡意程式碼就進行繞過了。
傳送門——>繞過網站WAF(圖片繞過)
其他
其他的關於通過繞過WAF匹配規則來繞過WAF的手段,需要攻擊者構造畸形資料來躲避WAF的正則匹配規則,這需要攻擊者發散思維,想出儘可能多的奇淫技巧。
結語
總的來說,繞WAF可以從兩個大的層面來考慮。一是通過HTTP協議層面,二是通過WAF對資料包的正則匹配層面。通過對這兩個層面細緻的研究,還可以發現更多的繞WAF的方法。筆者這裡只是淺析了繞WAF的思想,至於其他繞WAF的奇淫技巧,需要大家自己發散思維。
未完待續,以後遇到好的繞WAF方面的文章,會繼續更新。
相關文章:HTTP協議