利用http協議繞過waf

2022-03-08 15:25:35 字數 2269 閱讀 6546

目錄在頭部加入 transfer-encoding: chunked 之後,就代表這個報文採用了分塊編碼。這時,post請求報文中的資料部分需要改為用一系列分塊來傳輸。每個分塊包含十六進製制的長度值和資料,長度值獨佔一行,長度不包括它結尾的,也不包括分塊資料結尾的,且最後需要用0獨佔一行表示結束。

注意:分塊編碼傳輸需要將關鍵字and,or,select ,union等關鍵字拆開編碼,不然仍然會被waf攔截。編碼過程中長度需包括空格的長度。最後用0表示編碼結束,並在0後空兩行表示資料報結束,不然點選提交按鈕後會看到一直處於waiting狀態。

eg:

………………

connection: close

upgrade-insecure-requests: i

content-length: 50

4a=1

4unio

4n se

5lect11

0

原理:

http協議是由tcp協議封裝而來,當瀏覽器發起乙個http請求時,瀏覽器先和伺服器建立起連線tcp連線,然後傳送http資料報(即我們用burpsuite截獲的資料),其中包含了乙個connection欄位,一般值為close,apache等容器根據這個字段決定是保持該tcp連線或是斷開。當傳送的內容太大,超過乙個http包容量,需要分多次傳送時,值會變成keep-alive,即本次發起的http請求所建立的tcp連線不斷開,直到所傳送內容結束connection為close為止。

點選burp中repeater,在下拉選項中取消update content-length選中。

d=l and 1=1然後你會收到兩個返回包,不過這種方法有可能被waf給攔截

原理:

將頭部content-type改為multipart/form-data; boundary=69 然後設定分割符內的content-disposition的name為要傳引數的名稱。資料部分則放在分割結束符上一行。由於是正常資料提交,資料是能被apache容器正確解析的,嘗試1 and 1=1也會被某狗waf攔截,但如果其他waf沒有規則攔截這種方式提交的資料報,那麼同樣能繞過。

在HTTP協議層面繞過WAF

在http請求頭加入 transfer encoding chunked 之後,就代表這個報文採用了分塊編碼。這時,post請求報文中的資料部分需要改為用一系列分塊來傳輸。每個分塊包含十六進製制的長度值和資料,長度值獨佔一行,長度不包括它結尾的,也不包括分塊資料結尾的,且最後需要用0獨佔一行表示結束...

WAF 繞過方法

通常,即使繞過了waf的防護,前提條件是後端伺服器是否存在對應的漏洞,後端在開發時一定要在 中加入引數的過濾與校驗,不能只指望waf在中間進行防護,減少威脅面,編寫安全的 才是正確的做法。在bash shell中,問號?表示萬用字元,可以替換任意的單個字元 非空 表示萬用字元,可以匹配任意長度 包括...

waf繞過注入

waf 是什麼?安全是乙個不斷對抗的過程,有防護手段,就有相應的繞過手段。滲透測試過程中,waf 是必定會遇到的,如何繞過 waf 就是乙個問題。waf繞過的手段千變萬化,分為3類 白盒繞過 黑盒繞過 fuzz繞過 白盒繞過 如果繞過 白盒下的繞過主要針對原始碼進行審計,分析函式功能,構造特定的包進...