SQL Injection (資料隱碼) 簡介

Slides:



Advertisements
Similar presentations
Database Management System 資料庫管理系統
Advertisements

LearnMode學習吧 行動學習 網站註冊程序 長榮中學 電腦中心 製.
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
無線寬頻分享器設定範例 銜接硬體線路 推斷無線基地台的IP 設定無線基地台 相關觀念解釋.
Views ,Stored Procedures, User-defined Function, Triggers
XSS & SQL Injection理論 2014/7/29 許子謙.
RIA 程式設計 主講人:彭震榮.
VMware Player 安裝說明 2018/11/14.
LINQ 建國科技大學 資管系 饒瑞佶.
XSS & SQL Injection理論 2014/7/29 許子謙.
SQL結構化查詢語言 SQL是 Structured Query Language 的縮寫,簡單的說,SQL是一種與資料庫溝通的共通語言,它是當時在 IBM 工作的 E.F. Codd於1970 年針對關聯式模型 ( relational model ),所建構出來的資料庫理論,也因此有了所謂關聯式資料庫的系統,但在發展的初期,由於各種關聯式資料庫系統廠商的.
PHP與SQL語法存取MySQL SQL
JAVA vs. SQL Server 建國科技大學 資管系 饒瑞佶 2013/4 V1.
連結資料庫 ACCESS MSSQL.
SQL Injection (資料隱碼) 簡介
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
JDK 安裝教學 (for Win7) Soochow University
高等資料庫管理系統 Advanced Database Management System
資料庫管理 操作DBMS 指導教授:楊維邦  助教:廖皓翔.
資料庫安全 (Database Security)
Google Data API Spreadsheet
Controls.
HiNet 光世代非固定制 用戶端IPv6設定方式說明
SQL Stored Procedure SQL 預存程序.
R教學 安裝RStudio 羅琪老師.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
SQL結構化查詢語言 SQL是 Structured Query Language 的縮寫,簡單的說,SQL是一種與資料庫溝通的共通語言,它是當時在 IBM 工作的 E.F. Codd於1970 年針對關聯式模型 ( relational model ),所建構出來的資料庫理論,也因此有了所謂關聯式資料庫的系統,但在發展的初期,由於各種關聯式資料庫系統廠商的.
第 5 章 SQL Server 的安全性管理.
網路安全管理 期末報告 分散式阻斷服務攻擊 - DDoS 指導教授:梁明章 教授 學生:陳皓昕 A
無線路由器(AP)管理.
OpenID與WordPress使用說明
連結資料庫管理系統.
App Inventor2呼叫PHP存取MySQL
檔案與磁碟的基本介紹.
SQL Injection (資料隱碼) 學生:a 吳倩瑜 指導教授:梁明章.
驗證 Authentication.
網路安全技術期末報告 Proxy Server
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
倍力資訊 羅慶祖 第一事業部 協理.
PLC-GPPW軟體使用教學 授課教師:張祖烈
Ch20. 計算器 (Mac 版本).
UpToDate Anywhere 設定方法
本院使用建教合作之輔仁大學 圖書館資料庫 設定方式說明
Firewall-pfsense Mars Su
網路安全管理報告 緩衝區溢位攻擊 學生:吳忠祐 指導教授:梁明章.
網頁程式概論 建國科技大學資管系 饒瑞佶 2015/9 V1 2016/4 V2 2016/9 V3.
PHP與MySQL 入門學習指南 凱文瑞克 著 第 22 章 SQL 介紹與建立MySQL資料庫.
講師:陳永芳 網際網路與電子郵件應用 講師:陳永芳
IIS Internet Information Services
期末考.
個人網路空間 資訊教育.
指導老師:溫翔安 組員:溫允中4970E011 李雅俐4970E025 蕭積遠4970E026 陳欣暉4970E086
賽門鐵克安全系統進化史-正確選用賽門鐵克防護系統
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
資訊安全和資訊倫理宣導 永康區復興國小教務處.
線上MySQL測試資料庫 db4free.net (
案件名稱: 資安預警通報 通報等級: 第一級 發生時間: 2019/02/24 03:53:28 案件說明:
編輯網頁可用那些應用程式? 記事本 Word FrontPage Dreamweaver.
SQL語法教學 2015/10/15 John.
1. 查詢個人電腦版本 1.進入控制台 2.點選“所有控制台項目” 3.點選“系統”.
國立屏東大學宿舍網路連線 設定說明 104/08/12.
資料庫PROJECT B 沈芝羽 B 李翊銘.
國立台灣大學 關懷弱勢族群電腦課程 By 資訊工程 黃振修
第四章 通訊與網路管理 授課老師:褚麗絹.
多站台網路預約系統之 AJAX即時資料更新機制
Web安全基础教程
Develop and Build Drives by Visual C++ IDE
JUDGE GIRL 使用介紹 & 常見問題 TAs :
NWE詢價系統使用說明--for vendor
InputStreamReader Console Scanner
Presentation transcript:

SQL Injection (資料隱碼) 簡介 主講人: 陳培德 成大電機所博士候選人 密碼與網路安全研究室 URL: http://crypto.ee.ncku.edu.tw Email: peder@crypto.ee.ncku.edu.tw

大綱 前言 什麼是SQL Injection 影響的系統 SQL Injection原理 SQL Injection攻擊 SQL 帳號設定

前言 在 1997 年以前國外電腦通信雜誌曾經披露此一弱點。 刑事警察局與新波科技公司合作, 4月23日公佈有關SQL Injection的調查,由於國內九成以上網站皆使用SQL資料庫系統,因此,經警方測試,研判國內八成以上的網站已面臨「資料隱碼」攻擊方式的嚴重威脅。

什麼是SQL Injection SQL Injection 應稱為 SQL 指令植入式攻擊,主要是屬於 Input Validation 的問題。目前被翻譯成『資料隱碼』攻擊。 SQL Injection攻擊法並非植入電腦病毒,它是描述一個利用寫入特殊SQL程式碼攻擊應用程式的動作。 換言之,只要提供給使用者輸入的介面,又沒有做到相當嚴密的輸入資料型態管制,就有可能會遭受這種行為的攻擊。

SQL Injection SQL Injection 的起因通常是因為程式利用字串建造方式執行。 利用正常查詢網站資料時,將攻擊資料庫的指令夾藏於網站查詢命令中。 攻擊者可穿透防火牆,繞過身分認證機制,取得資料庫使用權限,進而竊取資料或竄改、破壞資料庫。

影響的系統 影響的系統包括MSSQL、MySQL、Oracle、Sybase與DB2等。 Apache、IIS、Domino、Netscape的網站系統,透過ASP、PHP與JSP等程式碼,攻擊破壞各種SQL資料庫。 影響的系統包括MSSQL、MySQL、Oracle、Sybase與DB2等。

SQL Injection 攻擊成立的前提 輸入欄位沒有針對特殊符號進行過濾 查詢欄位沒有限制長度及內容 資料庫的權限過高 攻擊者猜測到資料欄位的部分資訊 ASP源碼洩漏的漏洞

ASP程式碼中可能內含資料庫之帳號密碼

注意! 以下關於SQL Injection說明僅為教學講解之用,提供伺服器管理人員針對自身系統進行檢查之參考,若在未事先備份的情況下,造成資料庫系統損害,後果請自行負責 未經其它網站管理人員同意前,嚴禁惡意測試他人網站系統之安全性,否則造成任何法律糾紛皆自行負責

SQL Injection原理 一般輸入帳號密碼的網站的SQL語法 如果正常使用者帳號A123456789 ,密碼1234 select * from member where UID =' "& request("ID") &" ' And Passwd =' "& request("Pwd") & " ' 如果正常使用者帳號A123456789 ,密碼1234 select * from member where UID ='A123456789' And Passwd='1234' 輸入的帳號與密碼等資訊會取代ASP( or PHP、JSP)中的變數,並由兩個單引號(' ')所包住

SQL Injection原理 (cont.) select * from member where UID =' "& request("ID") &" ' And Passwd =' "& request("Pwd") & " ' 若攻擊者已知系統中已有一個Admin的管理者帳號,則輸入Admin '-- ,即可不須輸入密碼而進入資料庫 select * from member where UID =' Admin '-- ' And Passwd =' ' 註: -- 符號後的任何敘述都會被當作註解 (以上面為例,And子句將被SQL視為說明用)

select * from member where 正常連線狀態 網際網路 ID=A123456789 Passwd=1234 select * from member where UID ='A123456789' And Passwd='1234'

select * from member where SQL Injection攻擊 網際網路 ID=Admin' -- Passwd=1234 select * from member where UID = 'Admin' --' And Passwd= '1234'

select * from member where UID =' ' or 1=1 -- ' SQL Injection攻擊(範例一) 一旦惡意使用者輸入 使用者帳號' or 1=1 --,密碼asdf1234(任意輸入) select * from member where UID =' ' or 1=1 -- ' And Passwd = 'asdf1234'

select * from member where UID =' abcdefg ' SQL Injection攻擊(範例二) 一旦惡意使用者輸入 使用者帳號abcdefg (任意輸入) , 密碼asdf (任意輸入) ' or 1=1 -- select * from member where UID =' abcdefg ' And Passwd = ' asdf ' or 1=1 -- '

SQL Injection攻擊(範例三) 若使用者輸入以下字串 SELECT * FROM myTable WHERE someText =' " & request.form("inputdata") & " ' 若使用者輸入以下字串 ' exec master..xp_cmdshell 'net user test testpass /ADD' -- WHERE someText ='' exec master..xp_cmdshell 'net user test testpass /ADD'-- ' 如此一來,便可在SQL伺服器上新增一個使用者test帳號(密碼testpass)

SQL Injection攻擊 其它的變化型 ' ;SHUTDOWN-- 停止SQL伺服器 ' ;DROP Database <資料庫名稱>-- 刪除資料庫 ' ;DROP Table <資料表名稱>-- 刪除資料表 ' ;DELETE FROM <資料表名稱>-- 刪除資料表 ' ;Truncate Table <資料表名稱>-- 清空資料表

SQL帳號設定 sa 權限 sa 權限就是可以管理所有資料庫權限,因此攻擊者就有可能讀取,寫入,甚至可以刪除所有 SQL 資料庫伺服器裡的資料。 造成影響 攻擊者可以得到 SQL Server 以及作業系統完整的控制。 攻擊者透過 xp_cmdshell 的延伸預存程序(extended stored procedure )能夠對 SQL Server 資料庫上的所有資料進行任意的存取動作, 甚至可以在SQL Server尚值入後門。

SQL帳號設定 (cont.) db_owner 權限 造成影響 攻擊者能夠對資料庫上的所有資料進行讀寫動作。 能夠刪除Table、建立新 Table、進而取得被影響資料庫的控制權。

SQL帳號設定 (cont.) normal user 一般使用者權限 (建議使用) 造成影響 攻擊者只能掌控被攻陷的那個使用者的資料庫 在比較好的情況下,攻擊者只能執行一些閱讀指令 在最差狀況下, 攻擊者也只能夠閱讀或寫入被攻陷的那個使用者的表格

如何防範SQL Injection 網頁程式撰寫方面 過濾輸入條件中可能隱含的sql指令,如INSERT、SELECT、UPDATE等 針對輸入條件進行規範,如無必要,應規範為僅可接受大小寫英文字母與數字等 針對特殊的查詢參數進行過濾,如--、 ' 等可利用replace(xx, " ' ", " ' ' ")進行替換 進行程式寫作時,應時常檢查程式是否存在有非預期輸入資料的漏洞。

如何防範SQL Injection (cont.) 資料庫管制方面 Sa管理帳號的密碼管控 刪除多餘的公開資料表(程式開發、範例等) 若無特殊必要,將其他使用者設定為一般使用者權限,以避免完整資料庫內容遭入侵 移除不必要但功能強大的延伸預存程序,如xp_cmdshell 、xp_regaddmultistring 、xp_unpackcab等

如何防範SQL Injection (cont.) 網站伺服器方面 定期修補作業系統與網站伺服器的漏洞 避免ASP、PHP與JSP程式源碼洩漏,造成使用者可以直接瀏覽 更改預設的網站虛擬路徑,如IIS系統不要使用預設的C:\Inetpub\WWWRoot\的目錄 不提供錯誤訊息給使用者 攻擊者可藉由回報的錯誤訊息得知資料庫的結構 建議將錯誤輸入重導到適當網頁 修改C:\WINNT\Help\iisHelp\common\500-100.asp的預設錯誤網頁

如何防範SQL Injection (cont.) 外部防護系統的控管 可藉由防火牆系統管制port 1433與1434的連線 藉由防火牆限制網路登入者的身份 藉由Host-based IDS或Application-based IDS來監控系統運作的執行

參考資料 The Open Web Application Security Project http://www.owasp.org/asac/input_validation/sql.shtml 新波科技http://www.diamondinfotech.com.tw/ 精誠公司安全通報http://www.sysware.com.tw/news/press/020424.shtml

參考資料 (cont.) 台灣微軟公司關於SQL Injection的相關報導 http://www.microsoft.com/taiwan/sql/SQL_Injection.htm http://www.microsoft.com/taiwan/sql/SQL_Injection_G1.htm SQL Server電子雜誌http://www.sqlserver.com.tw/