工具簡介
- SQLMAP: 一個開放源碼的滲透測試工具,它能夠自動探測和利用SQL注入漏洞來接管數據庫服務器。它配備了一個強大的探測引擎,爲最終滲透測試人員提供不少強大的功能,能夠拖庫,能夠訪問底層的文件系統,還能夠經過帶外鏈接執行操做系統上的命令。
- 常見參數使用
--sql-shell |
執行SQL命令 |
--OS-cmd |
執行系統命令 |
--OS-shell |
與系統Shell交互 |
-r |
加載外部請求包 |
--data=DATA |
經過POST發送數據字符串 |
--proxy=PROXY |
使用HTTP代理連接到目標URL |
--tamper=TAMPER |
使用給定的腳本篡改注入數據 |
--current-user |
獲取當前用戶名稱 |
--current-db |
獲取當前數據庫名稱 |
--cookie |
設置Cookie值 |
--dbs |
列出全部數據庫 |
--tables |
列出數據庫中的表 |
SQL注入的危害
- 1.繞過登陸驗證:使用萬能密碼登陸網站後臺等。
- 2.獲取敏感數據:獲取網站管理員賬號、密碼等。
- 3.文件系統操做:列目錄,讀取、寫入文件等。
- 4.註冊表操做:讀取、寫入、刪除註冊表等。
- 5.執行系統命令:遠程執行命令。
解決方案
- 1.過濾:經過對SQL關鍵字和關鍵符號的過濾來避免SQL注入漏洞的發生
- 優勢
業務改動量小,部署方便,是安全防禦軟件/硬件經常使用的解決方案。
- 缺點
基於黑名單的工做原理,容易產生誤報或被繞過。
- 2.編碼:基於各種數據庫定義的關鍵字和符號的轉義規則將用戶輸入進行轉義後組成SQL語句
- 優勢
不影響正常請求且不容易被繞過,OWASP ESAPI項目提供了這種解決方案。
- 缺點
整改須要必定的工做量,須要數據庫自身的支持,且理論上仍存在的繞過風險。
- 3.預編譯:基於各類語言的預編譯功能,先將SQL語句進行編譯,用戶輸入的內容只會被當作參數傳入,不會被編譯爲命令
- 優勢
從根本上杜絕了SQL發生的可能性。
- 缺點
業務改動量大,建議新開發的項目均採用此種方式避免SQL注入攻擊的產生。
實驗一:經過sql注入獲取當前數據庫名和mysql登陸名
若網站存在sql注入,且具備顯示數據功能,那麼咱們能夠經過拼接參數進行表的聯合查詢來盜取所需數據
mysql
構造sql查找回顯位置:在url後面加上?id=-1' union select 1,2,3;--+得知回顯位置爲查詢數據集的第二和第三列
sql
構造sql查詢當前數據庫名和mysql登陸名:在url後面加上?id=-1' union select 1,database(),user(); --+
shell
實驗二:使用萬能密碼登陸具備sql注入漏洞的網站
萬能密碼1' or 1=1 limit 1; #(原理在於利用引號的閉合,or運算,以及註釋#)登陸
數據庫
實驗三:使用Sqlmap獲取具備sql注入漏洞的網站的數據庫信息(可進行拖庫)
使用BurpSuite抓取報文
安全
使用sqlmap -r /etc/test –dbs獲取全部數據庫名稱
服務器