2018-2019-2 網絡對抗技術 20165317 Exp 9 Web安全基礎

2018-2019-2 網絡對抗技術 20165317 Exp 9 Web安全基礎

WebGoat

  • 因WebGoat默認使用8080端口,因此開啓前先用netstat -tupln | grep 8080查看端口是否被佔用,若是被佔用,用kill 進程號終止佔用8080端口的進程。由於kali始終沒法安裝JDK,故使用本機實驗。
  • 普通安裝,命令行輸入java -jar webgoat-container-7.0.1-war-exec.jar
  • 瀏覽器轉:localhost:8080/WebGoat 直接用默認用戶名密碼登陸便可,開始練習

SQL注入攻擊(Injection Flaws)

1.命令注入(Command Injection)

概念:命令注入攻擊對任何一個以參數驅動的站點來講都是一個嚴重威脅。這種攻擊技術背後的技術方法,簡單易學,能形成大範圍的損害,危及系統安全。儘管這類風險數目使人難以置信,互聯網中的系統很容易受到這種形式的攻擊。javascript

原理:在正常的參數提交過程當中添加惡意代碼以執行某條指令。html

目標:能夠在目標主機上執行任何系統命令java

操做方法web

  • 右鍵點擊複選框,選擇inspect Element審查網頁元素對源代碼進行修改,在末尾添加"& netstat -an & ipconfig"
    正則表達式

  • 點擊view,能夠看到執行指令後的網絡端口使用狀況和IP地址。攻擊成功!
    sql

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

概念:注入數字型數據(如:永真式)達到注入的效果。數據庫

原理:在station字段中注入特徵字符,組合成新的SQL語句。
如:SELECT * FROM weather_data WHERE station = [station]瀏覽器

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

操做方法服務器

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

  • 顯示全部城市的天氣狀況,攻擊成功!(5)

3.日誌欺騙(Log Spoofing)

概念:經過在日誌文件中插入腳本實現欺騙。

原理:在日誌文件中愚弄人的眼睛,攻擊者能夠利用這種方式清除他們在日誌中的痕跡

目標:灰色區域表明在 Web 服務器的日誌中的記錄的內容,咱們的目的是使用戶名爲「admin」的用戶在日誌中顯示「成功登陸」

操做方法

  • 前提:本題目接受用戶輸入的任何一個用戶名,並將其追加到日誌文件中。

  • 利用入回車(0D%)和換行符(%0A),在 username 中填入sxx%0d%0aLogin Succeeded for username: admin

4. 字符串型注入(String SQL Injection)

概念:經過注入字符串繞過認證

原理:基於如下查詢語句構造本身的 SQL 注入字符串。

SELECT * FROM user_data WHERE last_name = '?'

目標基於查詢語句構造本身的SQL 注入字符串將全部信用卡信息顯示出來。

  • 點擊Injection Flaws-String SQL Injection
  • 輸入查詢的用戶名Smith' or 1=1--
    • 操做中咱們使用了'提早閉合"",插入永真式1=1,且--註釋掉後面的內容,這樣就能select表裏面的全部數據
    • 結果以下:

5.SQL 注入(LAB: SQL Injection)

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

操做方法

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

  • 以用戶Neville(admit)登陸,輸入密碼hello' or '1' = '1

  • 獲得全部人員列表,攻擊成功!

XSS攻擊(Cross‐Site Scripting)

跨站腳本攻擊是經過HTML注入劫持用戶的瀏覽器,任意構造用戶當前瀏覽的HTML內容,能夠模擬用戶當前的操做。這裏實驗的是一種獲取用戶名和密碼的攻擊。

6.XSS 釣魚(Phishing with XSS)

原理:當用戶輸入非法HTTP響應時容易受到XSS攻擊。在XSS的幫助下,能夠實現釣魚工具或向某些官方頁面中增長內容。對於受害者來講很難發現該內容是否存在威脅。

目標:建立一個 form,要求填寫用戶名和密碼。將數據提交到 http://localhost/WebGoat/catche r?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam

操做方法

  • 利用XSS能夠在已存在的頁面中進一步添加元素,包括兩部分:

    • 受害人填寫一個表格;
    • 服務器以讀取腳本的形式,將收集到的信息發送給攻擊者。
  • 編寫一段腳本讀取被攻擊者在表單上輸入的用戶名和密碼信息,將這些信息發送給捕獲這些信息的 WebGoat

  • 編寫一個帶用戶名和密碼輸入框的表格

CSRF攻擊

7.跨站請求僞造(Cross Site Request Forgery (CSRF))

原理:跨站請求僞造是一種讓受害者加載一個包含網頁的圖片的一種攻擊手段。如:<img src="https://www.mybank.com/me?transferFunds=5000&to=123456"/>,當受害者的瀏覽器試圖呈現此頁面時,它將使用指定的參數向www.mybank.com的「me」端點發出請求。瀏覽器將請求連接以得到圖像,即便它其實是一個資金轉移功能。提交請求時,瀏覽器將添加與站點相關的全部cookie。所以,若是用戶對站點進行了身份驗證,而且擁有永久或當前會話cookie,那麼站點將沒法將其與合法的用戶請求區分開來。經過這種方式,攻擊者可讓受害者執行他們不打算執行的操做,好比「購買物品」,或者脆弱網站提供的任何其餘功能。

目標:向新聞組發送一封email。這個email包含一個image,其URL指向一個惡意請求。URL應該指向「攻擊」servlet,其中包含「屏幕」和「菜單」參數,以及一個額外的參數「transferFunds」,其數值爲5000。能夠經過在右側插入的參數中找到「Screen」和「menu」值來構造連接。當通過身份驗證的CSRF電子郵件的收件人將被轉移他們的資金。

操做方法

  • 查看頁面右側Parameters中的src和menu值,分別爲267和900
  • 在title中輸入任何參數,message框中輸入<img src="http://localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=5000" width="1" height="1" />,以圖片的的形式將URL放進Message框,這時的URL對其餘用戶是不可見的(寬高設置成1像素的目的是隱藏該圖片),用戶一旦點擊圖片,就會觸發一個CSRF事件,點擊Submit提交
  • 在Message List中生成以Title命名的消息。點擊該消息,當前頁面就會下載這個消息並顯示出來,轉走用戶的5000元,從而達到CSRF攻擊的目的。能夠從左側的任務欄看到任務已完成。

基礎問答

  • 1.SQL注入攻擊原理,如何防護?
    • 原理:SQL注入,就是經過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
      sql注入攻擊是利用是指利用設計上的漏洞,在目標服務器上運行Sql語句以及進行其餘方式的攻擊,動態生成Sql語句時沒有對用戶輸入的數據進行驗證是Sql注入攻擊得逞的主要緣由。如:在用戶名、密碼登輸入框中輸入一些',--,#等特殊字符,實現引號閉合、註釋部分SQL語句,利用永真式實現登陸、顯示信息等目的。
    • 防護:
      • 關閉或刪除沒必要要的交互式提交表單頁面;
      • 對漏洞注入點相關代碼進行關鍵字的過濾(如:利用正則表達式),以規範代碼安全性;
      • 不要在服務器端放置備份的文件以避免受到感染,或備份的文件含有漏洞,形成切入點;
      • 將數據庫裏的內容進行加密處理使其不具備特殊的意義。
  • 2.XSS攻擊的原理,如何防護?
    • 原理:XSS:跨站腳本。攻擊者利用網站漏洞(一般這些漏洞是指網站後臺處理程序沒有很好的對用戶輸入進行過濾),輸入能夠顯示在頁面上的、對其餘用戶形成影響的HTML代碼;因爲受害者瀏覽器對目標服務器的信任,當其訪問目標服務器上被注入惡意腳本(如:html標籤或者javascript代碼)的頁面後,這段惡意腳本能夠順利執行,實現獲取用戶cookie並能夠利用用戶身份進行非法操做的目的。
    • 防護:
      • 用戶角度:提升防範意識,不要輕易輸入我的信息,如用戶名密碼;
      • 網頁製做者角度:
        • 對輸入和URL參數進行過濾
        • 在輸出數據以前對潛在的威脅的字符進行編碼、轉義
  • 3.CSRF攻擊原理,如何防護?
    • 原理:
      • CSRF :跨站請求僞造。
        CSRF就是冒名登陸。跨站請求僞造的核心本質是竊取用戶的Session,或者說Cookie,由於目前主流狀況Session都是存在Cookie中.攻擊者並不關心被害者具體賬號和密碼,由於一旦用戶進行了登陸,Session就是用戶的惟一憑證,只要攻擊者可以獲得Session,就能夠假裝成被害者進入服務器.
      • 主要是當訪問網站A時輸入用戶名和密碼,在經過驗證後,網站A產生Cookie信息並返回,此時登陸網站A成功,可正常發送請求到網站A。在未退出網站A前,若訪問另外一個網站B,網站B可返回一些攻擊性代碼並請求訪問網站A;所以在網站B的請求下,向網站A發出請求。但網站A不知道該請求惡意的,所以仍是會執行該惡意代碼
    • 防護:
      • 驗證請求中的Token
      • 驗證 Referer
      • 添加加隨機驗證
      • 設定cookie域
相關文章
相關標籤/搜索