1. 程式人生 > 實用技巧 >WAF的工作原理和繞過淺析

WAF的工作原理和繞過淺析

WAF

WAF的判斷

WAF的工作原理

基於規則庫匹配的WAF

WAF的繞過

域名轉換為ip

WAF解析HTTP請求階段繞過

分塊編碼(Transfer-Encoding)繞過WAF

其他

WAF匹配規則階段繞過

利用溢量資料繞過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請求——>匹配規則——>防禦動作——>記錄日誌

具體實現如下:

  1. 解析http請求:協議解析模組
  2. 匹配規則:規則檢測模組,匹配規則庫
  3. 防禦動作:return 403 或者跳轉到自定義介面,或者不返回任何資料,或者拉黑IP
  4. 日誌記錄:記錄到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

利用分塊傳輸吊打所有WAF

[技術]編寫Burp分塊傳輸外掛繞WAF

HTTP 協議中的 Transfer-Encoding

其他

其他的關於通過構造HTTP協議來繞過WAF,需要攻擊者對 HTTP協議的各欄位構造,各容器對於HTTP協議的解析 都很熟悉。筆者對於HTTP協議也還是停留在比較淺顯的表面,要想更深入的瞭解HTTP協議,可以去檢視官方文件:RFC2616。

WAF匹配規則階段繞過

利用溢量資料繞過WAF

這種繞過方法利用的是通過提交非常大的資料,由於資料量過大,超過了WAF的正則匹配字元,我們的惡意程式碼就不經過WAF的正則匹配了,因此我們的惡意程式碼就進行繞過了。

傳送門——>繞過網站WAF(圖片繞過)

其他

其他的關於通過繞過WAF匹配規則來繞過WAF的手段,需要攻擊者構造畸形資料來躲避WAF的正則匹配規則,這需要攻擊者發散思維,想出儘可能多的奇淫技巧。

結語

總的來說,繞WAF可以從兩個大的層面來考慮。一是通過HTTP協議層面,二是通過WAF對資料包的正則匹配層面。通過對這兩個層面細緻的研究,還可以發現更多的繞WAF的方法。筆者這裡只是淺析了繞WAF的思想,至於其他繞WAF的奇淫技巧,需要大家自己發散思維。

未完待續,以後遇到好的繞WAF方面的文章,會繼續更新。

相關文章:HTTP協議

HTTP協議之分段傳輸與分塊編碼

技術討論 | 在HTTP協議層面繞過WAF

利用分塊傳輸吊打所有WAF

繞過網站WAF(圖片繞過)

[技術]編寫Burp分塊傳輸外掛繞WAF

對過WAF的一些認知

WAF攻防研究之四個層次Bypass WAF