WAF攻防之SQL隱碼攻擊篇

旭1478080873000發表於2018-02-26

0x00 前言

隨著國家安全法的出臺,網路安全迎來發展的新時期,越來越多企業或政府單位開始重視網路安全。很多網站陸陸續續告別裸奔時代,開始部署web應用防火牆(WAF)以應對網路攻擊。由此,相關網站的安全性很大程度上取決於WAF的防護能力,WAF攻防研究已成為安全從業人員的必修課之一。

大多數WAF以規則匹配為基礎進行安全防護,少數WAF帶有自學習能力,規則維護成為WAF的核心。近年來,基於語義識別的WAF陸續出現,對其防護能力的研究也成為大家關心的熱點之一。本文以MySQL為研究物件,總結相關WAF注入繞過技術,通過實戰演練讓大家瞭解各大WAF的相關特性,最後從攻防角度對WAF安全進行總結。

0x01 注入繞過技術總結

對已知的WAF相關繞過技術,總結如下,網上已有相關技巧的講解,這裡就不一一演示,不明白的可以自己查詢相關資料:

在實際攻擊場景中,單一的繞過技巧往往無效,需要我們綜合利用各種繞過技術進行組合,結合各自WAF特性不斷進行推理,才能真正實現繞過。

0x02 注入點檢測繞過

Bypass WAF的第一步是識別注入點,我們拿到一個URL,第一步判斷引數是否有注入,然後再進行後續的繞過。簡單的and 1=1 and 1=2判斷肯定會被WAF攔截,我們需轉變思路進行繞過,一般WAF為了平衡風險和業務的關係不會對下面數字型探測方式進行攔截,否則會產生大量誤報影響正常業務執行。

本地測試環境:如若 and也會攔截,可以直接在引數上進行類似判斷操作,如id=1*0 、id=1*2,除了以上方法,還有很多其它衍生出的識別繞過方法,以{“op}為例作演示,其它的方法大家可以按照這種思路自行發揮:

安全狗:

百度雲加速:

騰訊雲:

阿里雲:

當我們已確認注入點後,下一步的目標是完全Bypass WAF出任意資料,以下以安全狗、modsecurity、百度雲加速、 阿里雲盾、長亭雷池截止目前最新的版本為例,這裡只提供繞過的思路,即如何利用已知技巧進行組合推理來繞過相關WAF防護,出資料具體過程這裡就不詳解,大家感興趣的可以手動嘗試。

0x03 安全狗Bypass

本地無WAF測試環境:

在對安全狗的繞過測試中發現,只需利用一個*/閉合多個/*!即可繞過,簡單粗暴。

http://192.168.20.123:81/user.php?id=-11/*!union/*!select/*!1,(select/*!password/*!from/*!test.user limit 0,1),3*/

0x04 Modsecurity Bypass

本地環境搭建modsecurity模組進行安全防護,利用{“op}、/*!50000*/組合進行繞過。

http://192.168.20.123/user.php?id=1 and{`version`length((select/*!50000schema_name*/from/*!50000information_schema.schemata*/limit 0,1))>0}

0x05 百度雲加速Bypass

利用–+%0a進行繞過。

0x06 阿里雲盾Bypass

利用–+%0a、@自定義變數、{a key}組合進行繞過。

0x07 長亭雷池Bypass

經過大量測試後,發現雷池在處理MySQL註釋符/*! */識別時存在缺陷,只需把攻擊語句放在註釋符中即可繞過。

0x08 自動化bypass

當我們挖掘出繞過相關WAF進行SQL隱碼攻擊的技巧後,下一步就是編寫指令碼實現工具自動化注入。以sqlmap為例,我們編寫tamper指令碼實現注入自動化。

0x09 WAF防禦

對已知或未知的安全問題進行防禦是WAF功能的核心,漏報及誤報是衡量一個WAF產品好壞的重要指標,具體落實到規則的及時更新、bypass新技巧的及時響應。另外,還應綜合利用攔截日誌資料進行相關演算法分析,不斷提高WAF的防護能力。總結來說,打造一款上乘的WAF,非一朝一日之功,需長期的技術儲備、產品不斷地更新迭代、演算法地持續優化,才能把好防禦這個重要的關口。同時,不斷探索新的高效防護方法,才能在攻防戰中立於不敗之地。

0xa0 總結

從攻擊者角度來看,繞過WAF的基本方法其實不多,如何把這些已知方法融合起來,並結合各自WAF本身的防護特性,不斷進行推理,成為突破WAF防護的關鍵。當然,自動化Fuzz才是WAF Bypass新技術產生的正道。另外,從個人的注入Bypass測試過程看,繞過基於語義識別的WAF比繞過基於規則識別的WAF難得多,值得我們挑戰。

從WAF產品角度來看,衡量一個WAF好壞的標準是漏報率和誤報率的高低,但這些指標建立在以WAF不影響正常業務為前提。測試中我發現,基於規則的WAF對業務的耦合度往往較低,不管是騰訊雲WAF還是阿里雲盾,對使用者的輸入都較為敏感,如引數中輸入註釋符請求就會被攔截。而基於語義的WAF的和業務的耦合度較高,誤報率下降明顯。從測試結果來看,基於語義識別的WAF相較傳統WAF來說有較大優勢,值得我們學習和借鑑。

從安全管理者角度來講,從以上測試過程可以看出,不管是基於規則的WAF還是基於語義識別的WAF,都存在被都完全繞過的可能。WAF的主要作用是提高攻擊門檻,但不能消滅攻擊入侵事件,解決安全問題的根本途徑還得從程式碼層面著手進行修復。

 更多安全研究請關注【銀河安全實驗室】微信公眾號!!!WAF攻防之SQL隱碼攻擊篇


相關文章