瀏覽器向伺服器傳送請求的時候必須指明請求型別(一般是get或者post)。如有必要,瀏覽器還可以選擇傳送其他的請求頭。大多數請求頭並不是必需的,但content-length除外。對於post請求來說content-length必須出現。
大多數waf都會較全面地檢測來自get請求的攻擊,有選擇地檢測來自post請求的攻擊,而忽略來自請求頭的攻擊。
waf繞過原因:
這裡的繞過主要是針對採取模式匹配來識別攻擊的waf檢測方法(其實大多數waf的基本方法都是這個,引申到ids,ips,anti-virus等安全產品都是採取的這種方法)。
採取模式匹配的檢測方法會繞過的原因無外乎以下幾種:
1、http協議解析漏洞 :waf進行模式匹配的時候都是對http協議變數進行匹配,攻擊者構造異常的http資料報導致不能正常提取變數,都不能進入到模式匹配階段,自然而然就繞過了。
2、模式匹配的先天不良:字串匹配,無論是簡單的正則匹配或者會配合一定的邏輯的匹配(比如對不同關鍵字進行加權操作,前後依賴關係判斷)反正都逃不開模式兩個字,而模式是固定的,就導致了各種側漏。
對於第2點,在雲waf上的問題最為嚴重,我們知道雲waf的使用者型別是多樣化的(不同的搭建技術:asp/php/jsp,執行環境:windows/linux,訪問方式:pc/mobile),理想狀態下,應該按站點型別精準投放防禦規則,但是,基於站點自動建模(安全人員中缺乏資料分析師)是個「前沿」的技術活,而免費模式下是產生不了多大動力來投入精力的,所以現實是傾向於選擇更通用的方式(放棄少數人)按危害優先順序來定製規則。
以上繞過原因衍生了以下的通用繞過方式。
waf繞過方式:
1、引數汙染
2、url重寫(例如:http://localhost/uyg/id/123+or+1=1/tp/456)
3、加密payload(例如:md5、sha-1、自定義加密)
4、緩衝區溢位
5、編碼繞過
6、特殊字元插入(%00)
7、異常http請求包(例如:超級大,不符合http規範但被server容錯的資料報)
8、資料報分塊傳輸方式transfer-encoding: chunked
sql注入繞過:
1、 編碼繞過:通過對sql注入攻擊payload進行unicode編碼,十六進製制編碼,雙url編碼來繞過檢測規則。
2、注釋語句繞過:通過在sql注入攻擊payload中插入注釋語句(內聯注釋)來繞過檢測規則。
3、大小寫繞過:通過變化sql注入攻擊payload的大小寫來繞過檢測規則。
4、型別轉換繞過:使用hex, ascii, ord, char,chr,cast,convert等型別轉換函式來變化特定字元來繞過檢測規則,除了型別轉換函式還有隱性型別轉換的特徵 (參考:
5、生僻的sql關鍵字繞過。
6、特殊的sql語法(例如: mysql . ~ ! + - 符號)
7、關鍵字拆分。
8、請求方式轉換(將get轉變為post,因為誤報的問題post的規則要遠遠比get規則松)。
WAF 繞過方法
通常,即使繞過了waf的防護,前提條件是後端伺服器是否存在對應的漏洞,後端在開發時一定要在 中加入引數的過濾與校驗,不能只指望waf在中間進行防護,減少威脅面,編寫安全的 才是正確的做法。在bash shell中,問號?表示萬用字元,可以替換任意的單個字元 非空 表示萬用字元,可以匹配任意長度 包括...
waf繞過注入
waf 是什麼?安全是乙個不斷對抗的過程,有防護手段,就有相應的繞過手段。滲透測試過程中,waf 是必定會遇到的,如何繞過 waf 就是乙個問題。waf繞過的手段千變萬化,分為3類 白盒繞過 黑盒繞過 fuzz繞過 白盒繞過 如果繞過 白盒下的繞過主要針對原始碼進行審計,分析函式功能,構造特定的包進...
waf 繞過的技巧
livers 2013 05 31 17 41 研究過國內外的waf。分享一些 奇淫絕技。mysql 過空格和一些正則。mysql select version version 5.1.50 community log 1 row in set 0.00 sec 複製 乙個更好玩的技巧,這個 控制符...