SQL Injection (資料隱碼) 簡介

Slides:



Advertisements
Similar presentations
口臭不苦惱 清新口氣大作戰 口臭不只破壞人際的互動,更是 身體發出的警訊,不能輕忽。 康健雜誌 89 期文. 梁煙純 攝影.邱瑞金.
Advertisements

模块五 动态网页技术 任务五 查询记录 任务一 表单设计制作 任务二 简单动态的 ASP 页面制作任务三 页面与数据库的集成任务四 添加记录 任务六 电商系统融入网站.
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
2011/11,12 南台資管 吳昭儀. 1. 使用者介面 (User Interface)  使用者操作畫面的安排  Textbox, ComboBox, ListBox, CheckList, … 2. 流程控制 (Process Control)  使用者輸入資料檢查  計算  資料輸出.
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
欢迎各位 Nice to Meet U.
武汉库得克 软件有限公司 公司简介 发展机遇 特点 一家专注于质量管理平台和整体 解决方案的提供商
Database Management System 資料庫管理系統
SQL Injection (資料隱碼) 簡介
两汉文学及汉代诗歌.
近现代文学概说.
第6章 数据库管理软件Access 年秋.
数据库系统原理及应用 Database Theory and Application
SQL的简单查询.
第六章 数据库和ADO.NET 褚龙现 软件学院.
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
第十三章 SQL Server的安全管理.
資料庫 (Database) SQL Server 2008實作
第七章 电子商务系统的运营与维护.
程式語言與設計 授課教師:蔣德威.
MySQL資料庫安全管理.
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
Xoops架站器介紹 基隆市教育網路中心 王言俊 按一下以新增備忘稿.
Chap 13 視界與資料庫程式設計.
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
WEB攻击与防护技术 徐 震 信息安全国家重点实验室.
WEB常见漏洞与挖掘技巧研究 广东动易网络——吴建亮
会计技能综合实训 ——会计分工.
转正述职报告 乐恩公司 史航
資料庫管理 資管二 賴柏融.
報告人:古博文 彰師大運動健康研究所副教授 人權教育基金會執行長 100年8月
契約 課程:文書實務與應用 教師:黃湃翔老師.
第 8 章 資料的 新增、修改與刪除.
XSS & SQL Injection理論 2014/7/29 許子謙.
課程名稱:資料庫系統 授課老師:李春雄 博士
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
第 14 章 預存程序.
Discover the power of SSL-VPN+ IT management
資料庫安全 (Database Security)
第一章 Visual Studio、SQL Server介紹與開發環境
SQL Server 2000 数据库入门.
5 数据库管理与保护 数据库运行的最小逻辑工作单位是事务,所有对数据库的操作,都以事务作为一个整体来执行或撤销。
操作資料庫 教授:楊維邦 教授 助教:黃存賢 陳廷宣.
第9章 SQL Server的数据库保护技术 教学目标:通过本章学习,了解SQL Server的安全体系结构的含义和安全认证模式的分类;掌握SQL Server登录账号、用户账号及角色的创建方法;熟悉权限的分类,掌握对象权限和语句权限的管理方法;明确SQL Server中数据完整性的种类,掌握数据完整性实现的具体方法;熟悉SQL.
使用ADO.NET访问数据 数据库连接 C#程序设计课程组.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
奢侈稅成效分析與房市未來發展 吳中書 中華經濟研究院 第十九屆亞太財務經濟會計及管理會議 ~07.09.
医院职工公费医疗系统.
Ch4.SQL Server 2005資料庫組成員元件介紹
数据智能同步系统 操作指南.
SQL Injection (資料隱碼) 學生:a 吳倩瑜 指導教授:梁明章.
U861院校专用版的安装流程 安装IIS中的WWW服务 安装SQL数据库 安装SQL SP4补丁 安装U861院校专用版.
数据库应用技术 SQL Server 2005.
网页设计与制作 Dreamweaver CS6 标准教程
CS, ZJU 4/18/2019 Chapter 7 数据库.
/ 第9讲:项目实施 冯顺磊 /
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
SQL查询语句 蔡海洋.
第三章 SQL Server数据管理.
1 打开 SQL Server 2005 安装盘,单击 SPLASH.HTA 文件进行安装,安装界面如图所示。
社群網站行銷經營管理模式之研究 —以ASP程式交流社群為例
第9章 存储过程的创建和使用 9.1 存储过程简介 9.2 创建存储过程 9.3 修改存储过程 9.4 删除存储过程 9.5 执行存储过程.
健康推廣協會專案 行政院勞動力發展署中彰投分署103年第8期網路商務A班專題報告.
風能 主題:風能 班級:四環工一A 組員:林明哲 4980N047 江信宏 4980N079
課程名稱:資料庫系統 授課老師:李春雄 博士
資料庫應用與實作 一到六章重點、習題.
第 1 章 認識資料庫系統.
Web安全基础教程
数据库应用技术 天津电大 翟迎建.
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/