01、LAB: Client Side Filtering :客戶端過濾
查找Neville Bartholomew 的工資是多少首繁?
客戶端過濾,有些時候服務(wù)器返回的了很多條信息,只挑選了其中少數(shù)進(jìn)行顯示,可以在返回的html源碼中看到全部的信息.
選中名字附近元素點擊"檢查"
在源碼中搜索關(guān)鍵詞"hidden" "Joanne"等
發(fā)現(xiàn)有3個"Joanne",其中一個隱藏了Neville的信息
或 直接抓包-->放包 一步到位
注意:一定要先點開看到別人的額工資后,再看html源碼翎卓。因為剛開始客戶端是沒有工資數(shù)據(jù)的抵乓,只有看到別人的工資了店归,才把數(shù)據(jù)都返回給客戶端了
Stage2:
打開clientSideFiltering.jsp,
(/Users/chenlei/Documents/WebGoat/.extract/work/Tomcat/localhost/WebGoat/org/apache/jsp/plugin_005fextracted/plugin/ClientSideFiltering/jsp)
將
StringBuffer sb = newStringBuffer();
sb.append("/Employees/Employee/UserID | ");
sb.append("/Employees/Employee/FirstName | ");
sb.append("/Employees/Employee/LastName | ");
sb.append("/Employees/Employee/SSN | ");
sb.append("/Employees/Employee/Salary ");
String expression = sb.toString();
修改為
StringBuffer sb = newStringBuffer();
sb.append("/Employees/Employee[Managers/Manager/text() = " +userid + "]/UserID | ");
sb.append("/Employees/Employee[Managers/Manager/text() = " +userid + "]/FirstName | ");
sb.append("/Employees/Employee[Managers/Manager/text() = " +userid + "]/LastName | ");
sb.append("/Employees/Employee[Managers/Manager/text() = " +userid + "]/SSN | ");
sb.append("/Employees/Employee[Managers/Manager/text() = " +userid + "]/Salary ");
String expression = sb.toString();
[LAB:DOM-Based cross-site scripting]
題目叫我們用WebGoat/images/logos/owasp.jpg 圖片來污染網(wǎng)頁
第一步刃麸,讓我們用一個圖片來作為名字的輸入登疗,從而篡改頁面。隨便輸入姓名頁面馬上就顯示了嫌蚤,于是輸入:
提交后STAGE1完成,断傲,owasp的頁面就被調(diào)用顯示了脱吱。
第二步,通過使用image的標(biāo)簽制造一個JS的警告彈出认罩,輸入:
箱蝠,提交,成了垦垂。
第三步宦搬,用IFRAME標(biāo)簽創(chuàng)造一個JS警告彈出,輸入:
<iframe src="javascript:alert('WTF')"></iframe>劫拗,提交间校,成了。
第四步页慷,復(fù)制給出的內(nèi)容提交憔足,頁面被改成一個密碼輸入窗口胁附,隨便寫點兒啥提交,內(nèi)容就被截獲了滓彰,也就是剛才介紹的那種供給情況控妻,攻擊者可以獲取受害者的信息。
第五步揭绑,修改腳本以防止攻擊弓候,在“/root/WebGoat-5.3_RC1/tomcat/webapps/webgoat/javascript
”中找到DOMXSS.js,修改成:
function displayGreeting(name) {
if (name != ''){
document.getElementByIdx_x("greeting").innerHTML="Hello, " +escapeHTML(name); + "!";
}
}
保存他匪,然后回到頁面菇存,嘗試進(jìn)行攻擊,失敗了诚纸,提示課程完成撰筷。escapeHTML是啥可在同目錄中找到它,一看便知畦徘。
DOM Injection
在輸入框中輸入任意字符
使用webscarab攔截response毕籽,將response的body替換為
“document.forms[0].SUBMIT.disabled = false;”
還有一種在Firefox中可行的方法是直接用firebug修改網(wǎng)頁源碼井辆,將按鈕的屬性disabled=‘’去掉就行了
[XML Injection]
使用webscarab攔截response
在root標(biāo)簽中加入另外兩個商品
<reward>WebGoatCore Duo Laptop 2000 Pts</reward>
<reward>WebGoatHawaii Cruise 3000 Pts</reward>
點擊acceptchanges关筒,另外兩個商品的信息已經(jīng)出現(xiàn)
[JSONInjection]
使用webscarab攔截response

將第一個航班的價格改為100,提交
或者用firebug修改
[SilentTransactions Attacks]
首先填入賬號杯缺,然后填入轉(zhuǎn)賬金額蒸播,一定不要超過當(dāng)前帳戶的最大余額,因為網(wǎng)頁是在客戶端通過JavaScript來驗證用戶輸入的金額是否大于賬戶余額的
提交后萍肆,使用webscarab攔截request袍榆,

將amount改為1000000
[InsecureClient Storage]
請原諒我未找到,這是從網(wǎng)上找的答案
啟用firebug塘揣,在如下位置設(shè)置斷點
**

**
輸入任意字符開始調(diào)試
當(dāng)鼠標(biāo)停在decrypted上面時包雀,可以看到他的值為PLATINUM,這個值就是code的值

在firebug中查找GRANDTOT亲铡,將他的readonly屬性去掉才写,

這樣就可以修改下面的值,將其修改為0從而免費獲得商品
Dangerous Use of Eval
Eval是php語言中執(zhí)行一段JS代碼的意思,這一道題也是一種典型的反射型XSS展示,與剛剛基于DOM的不同,DOM是直接插入新節(jié)點,而這個是使用一定技巧,先關(guān)閉原本的DOM,然后寫自己的DOM,再組裝好剛剛被關(guān)閉DOM的后半部分.通過php的Eval,alert被執(zhí)行123');alert(document.cookie);('123后的');使得原本的DOM不受影響,最后的('閉合掉了原本多出的')符號插入代碼的樣子是('123');alert(document.cookie);('')
Same Origin Policy Protection
/WebGoat/plugin_extracted/plugin/SameOriginPolicyProtection/jsp/sameOrigin.jsp
http://www.google.com/search?q=aspect+security
把這兩個網(wǎng)址再輸入一次就可以了