初級安全入門——SQL注入的原理與利用

工具簡介

  • 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注入,且具有顯示數據功能,那麼我們可以通過拼接參數進行表的聯合查詢來盜取所需數據

構造sql查找回顯位置:在url後面加上?id=-1' union select 1,2,3;--+得知回顯位置爲查詢數據集的第二和第三列

構造sql查詢當前數據庫名和mysql登錄名:在url後面加上?id=-1' union select 1,database(),user(); --+

實驗二:使用萬能密碼登錄具有sql注入漏洞的網站

萬能密碼1' or 1=1 limit 1; #(原理在於利用引號的閉合,or運算,以及註釋#)登錄

實驗三:使用Sqlmap獲取具有sql注入漏洞的網站的數據庫信息(可進行拖庫)

使用BurpSuite抓取報文

使用sqlmap -r /etc/test –dbs獲取所有數據庫名稱

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章