1 / 21

SQL Injection( 資料隱碼 ) 簡介

SQL Injection( 資料隱碼 ) 簡介. CCU C ampus N etwork A ssociation 講師:黃韋翔 maximum@cna.ccu.edu.tw. Outline. 什麼是 SQL Injection 影響的系統 SQL Injection 原理 SQL Injection 攻擊 SQL Injection 防範 參考資料. 什麼是 SQL Injection. SQL Injection 應稱為 SQL 指令植入式攻擊,主要是屬於 Input Validation 的問題。目前被翻譯成 『 資料隱碼 』 攻擊。

sahara
Download Presentation

SQL Injection( 資料隱碼 ) 簡介

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL Injection(資料隱碼) 簡介 CCU Campus Network Association 講師:黃韋翔 maximum@cna.ccu.edu.tw

  2. Outline • 什麼是SQL Injection • 影響的系統 • SQL Injection原理 • SQL Injection攻擊 • SQL Injection防範 • 參考資料

  3. 什麼是SQL Injection • SQL Injection 應稱為 SQL 指令植入式攻擊,主要是屬於 Input Validation 的問題。目前被翻譯成『資料隱碼』攻擊。 • SQL Injection攻擊並非植入電腦病毒,他利用寫入特殊SQL語法來動作。 • 只要有提供使用者輸入的介面,且對於資料沒有做過處理,則當資料傳遞給後端資料庫時,則可能造成問題。

  4. SQL Injection • SQL Injection 的起因通常是因為網頁設計不良,沒有對於輸入的字串做過濾。 • 利用正常查詢網站資料時,將攻擊的語法夾藏於網站查詢命令中。 • 攻擊者可穿透防火牆,繞過身分認證機制,取得資料庫使用權限,進而竊取資料或竄改、破壞資料庫。

  5. 影響的系統 • 各種互動性的網頁語言如PHP.ASP.JSP等等。 • 影響的系統包括市面上常見的MSSQL、MySQL、Oracle、Sybase等Database。

  6. 造成SQL Injection的因素 • 沒有針對特殊符號(如單引號)進行過濾 • 查詢欄位沒有限制長度及內容 • 資料庫的帳號控管不佳 • 資料庫權限過高 • 攻擊者猜測到資料欄位的部分資訊 • 程式原始碼的洩漏

  7. 攻擊成立的前提 • 沒有針對特殊符號(如單引號)進行過濾 • 查詢欄位沒有限制長度及內容 • 資料庫的帳號控管不佳 • 資料庫權限過高 • 攻擊者猜測到資料欄位的部分資訊 • 程式原始碼的洩漏

  8. 程式碼洩漏 • 常見的將檔案改成login.bak或是login.old

  9. 資料庫密碼控管不佳 • 使用預設密碼,或是空白密碼

  10. SQL Injection攻擊原理(1) • 一般網站對於使用者帳號驗證的sql語法 • SELECT * FROM User WHERE UserName=‘$ID' AND Password=‘$Pass‘; • 正常使用者輸入帳號test,密碼123 • SELECT * FROM User WHERE UserName=‘test' AND Password=‘123‘;

  11. SQL Injection攻擊原理(2) • 常見的系統管理帳號都為admin或是root • 有心人士猜測系統有admin帳號,則輸入帳號admin’--,使得SQL查詢語法變成 • SELECT * FROM User WHERE UserName=‘admin’--' AND Password=‘etretet‘; • 而--在sql語法中為註解的意思 • 也就是sql server實際上執行的語法是 • SELECT * FROM User WHERE UserName=‘admin’--'

  12. SQL Injection攻擊原理(3) • 或是使用者輸入abc’ or 1=1--這類的語法 • 則查詢的Sql語法變成 • SELECT * FROM User WHERE UserName=‘admin' AND Password=‘abc’ or 1=1--‘ • 因為加上的 or 1=1,則不管之前的條件為合,只要某個條件為真,則整個式子恆為真 • http://140.123.242.24/~maximum/nsc/demo.php

  13. SQL Injection攻擊原理(4) • 使用者資料庫密碼為空白 • 則可插入惡意語法新增檔案、使用者 • http://140.123.106.83/phpmyadmin/

  14. SQL 攻擊防範(1) • 過濾輸入條件中可能隱含的sql指令(如insert、select、update) • 對於輸入進來的字串做過濾(如特殊的’和--) • 利用檢測程式掃描原始碼是否有漏洞

  15. SQL 攻擊防範(2) • 資料庫權限控管 • root帳號的密碼控管 • 只開給普通使用者單一database的權限 • 刪除多餘的公開資料表

  16. SQL 攻擊防範(3) • 網站伺服器方面 • 定期更新系統軟體版本 • 避免使用者可以看到網頁資料夾原始目錄 • 不要使用預設的網站路徑(/usr/local/www) • 不提供錯誤訊息,使得使用者無法從回報的錯誤訊息中得到資料庫的資料結構 • 避免使用Windows架設WWWServer

  17. SQL 攻擊防範(4) • 程式撰寫部分 • 多利用addslash或是magic_quotes來做過濾 • 在撰寫程式時避免將檔案命名成xxx.old或是xxx.bak以及xxx.conf • 將conf檔放置於WWW不能存取之目錄

  18. 參考資料 • PHP Manual • http://us2.php.net/manual/en/security.database.sql-injection.php • 台灣Microsoft • http://www.microsoft.com/taiwan/sql/SQL_Injection_G1.htm • http://www.microsoft.com/taiwan/sql/SQL_Injection_G2.htm

  19. Any Questions?

  20. Thank You !!!

More Related