天天看點

SQL注入10之防禦繞過SQL注入-防禦繞過

免責聲明

該文章僅用于資訊防禦技術的交流和學習,請勿用于其他用途; 在未得到網站授權前提下,禁止對政府、事業機關、企業或其他機關網站及系統進行滲透測試;技術是把雙刃劍,請遵紀守法,做一名合格的白帽子安全專家,為國家的網絡安全事業做出貢獻

SQL注入-防禦繞過

WAF概念

WAF是英文”Web Applicaton Firewall“的縮寫,中文意思是”Web應用防火牆“,也稱為”網站應用級入侵防禦系統“。 ​ WAF是集WEB防護、網頁保護、負載均衡、應用傳遞于一體的WEB整體安全防護裝置。WAF需要部署在Web伺服器的前面,串行接入,不僅在硬體上性能要求高,而且不能影響web服務,是以HA功能、Bypass功能都是必須的,而且還要與負載均衡、WebCache等Web伺服器入侵的檢測能力。常見的實作形式包括代理服務、特征識别、算法識别、模式比對。

WAF分類

安全防護軟體劃分為:雲WAF、硬體WAF、主機防護軟體、軟體waf等。 在攻防實戰中,我們往往需要掌握一些特征,比如伺服器、資料庫、程式設計語言等等,以便更靈活的去構造payload,進而繞過安全防護進行漏洞利用

SQL注入繞過常見方式

1、繞過空格(注釋符,%a0)

2、括号繞過空格

3、引号繞過(使用十六進制)

4、逗号繞過(limit使用from或者offset)(substr使用from for屬于逗号)

5、比較符号(< >)繞過(使用greatest())

6、or and 繞過

7、繞過注釋符号(#,--)過濾

8、= 繞過 like

9、繞過union,select,where等

(1)使用注釋符繞過

(2)使用大小寫繞過

(3)内聯注釋繞過

(4)雙關鍵字繞過

10、通用繞過(編碼)

11、等價函數繞過

12、寬位元組繞過

大小寫繞過

SQL注入10之防禦繞過SQL注入-防禦繞過

使用注釋繞過

SQL注入10之防禦繞過SQL注入-防禦繞過

空格繞過

SQL注入10之防禦繞過SQL注入-防禦繞過

垃圾資料繞過

SQL注入10之防禦繞過SQL注入-防禦繞過

跟換送出方式繞過

使用hackbar插件

SQL注入10之防禦繞過SQL注入-防禦繞過

雙寫繞過

思路講解: ··舉例:?id=1 ··通路?id=1 and 1=1 頁面報錯 1=1,發現and被過濾,這時候嘗試使用雙寫的方式繞過,例如:anandd 1=1(切記不是 aa nn dd,是 an and d)變成了and,是以這時傳輸資料庫的語句時and 1=1,如果當通路order by錯誤資訊為‘der by’這發現過濾了or,這雙寫or,後面注入和union注入的一緻。 其他關鍵字也是,如果過濾select關鍵字,可以使用selselectect,雙寫繞過。

雙寫繞過始終都是頭跟尾雙寫,例:sel select ect、p php hp,過濾後變成sel ect、p hp

HTTP參數污染繞過

思路講解: HTTP參數污染,簡單的講就是給相同名稱參數附上兩個或者兩個以上的值,導緻應用程式以意外方式解釋而出現漏洞,現在的HTTP标準沒有提及在遇到相同參數多個指派時應該怎樣處理,是以web程式元件在遇到這類問題時采取的方法也不完全相同。

如以下案例: search.php?id=110&id=911 這就是典型的相同參數,多個指派的情況,針對于這種情況,由于HTTP标準沒有規定如何處理,是由Werserver來護理這個事情,但是每個Webserver處理時又不相同,針對于這種情況我們可以進行攻擊。 文法:?id=1&id=2' and 1=1 --+

URL編碼繞過

SQL注入10之防禦繞過SQL注入-防禦繞過

一次不行,可使用Burp Suite多次編碼

SQL注入10之防禦繞過SQL注入-防禦繞過

等價函數繞過

思路講解: hex()、bin() ==> ascii() sleep() ==>benchmark() concat_ws ==> group_concat() mid()、substr() ==> substring() @@user ==>user() @@datadir ==> datadir()

舉例:substring()和substr()無法使用時: ?id=1+and+ascii(lower(min((select+pwd+from+users+limit+1,1),1,1))) = 74 或者:substr((select'passwordd'),1,1)=0x70 strcmp(left('password',1),0x69) = 1 strcmp(left('password',1),0x70)=0 strcmp(left('password',1),0x71) = -1

雲鎖及安全狗繞過

繞過原理與上面類似,利用各種繞過方法即可實作雲鎖繞過和安全狗繞過

SQL注入防禦

1、普通使用者與系統管理者使用者的權限要有嚴格區分。 在權限設計中,對于終端使用者,即應用軟體的使用者,沒有必要給他們資料庫對象的建立,删除等權限。那麼即使在它們使用SQL語句中帶有嵌入式的惡意代碼,由于其使用者權限的限制,這些代碼也将無法被執行。故應用程式在設計的時候,最好把系統管理者的使用者與普通使用者區分開來。如此可以最大限度的減少注入式攻擊對資料庫帶來的危害;

2、強迫使用參數化語句。 如果在編寫SQL語句的時候,使用者輸入的變量不是直接嵌入到SQL語句。而是通過參數來傳遞這個變量的話,那麼就可以有效的防治SQL注入式攻擊。

3、加強對使用者輸入的驗證。 總體來說,防止SQL注入式攻擊可以采用兩種方法,一是加強對使用者輸入的内容的檢查與驗證;二是強迫使用參數化語句來傳遞使用者輸入的内容。

4、多層環境如何防治SQL注入式攻擊? 在多層應用環境中,使用者輸入的所有資料都應該在驗證之後才能被允許進入到可信區域。未通過驗證過程的資料應被資料庫拒絕,并向上一層傳回一個錯誤資訊。實作多層驗證。

5、增加專業的WAF裝置

繼續閱讀