01、LAB: Client Side Filtering :客户端过滤
查找Neville Bartholomew 的工资是多少?
客户端过滤,有些时候服务器返回的了很多条信息,只挑选了其中少数进行显示,可以在返回的html源码中看到全部的信息.
选中名字附近元素点击"检查"
在源码中搜索关键词"hidden" "Joanne"等
发现有3个"Joanne",其中一个隐藏了Neville的信息
或 直接抓包-->放包 一步到位
注意:一定要先点开看到别人的额工资后,再看html源码。因为刚开始客户端是没有工资数据的,只有看到别人的工资了,才把数据都返回给客户端了
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 图片来污染网页
第一步,让我们用一个图片来作为名字的输入,从而篡改页面。随便输入姓名页面马上就显示了,于是输入:
提交后STAGE1完成,,owasp的页面就被调用显示了。
第二步,通过使用image的标签制造一个JS的警告弹出,输入:
,提交,成了。
第三步,用IFRAME标签创造一个JS警告弹出,输入:
<iframe src="javascript:alert('WTF')"></iframe>,提交,成了。
第四步,复制给出的内容提交,页面被改成一个密码输入窗口,随便写点儿啥提交,内容就被截获了,也就是刚才介绍的那种供给情况,攻击者可以获取受害者的信息。
第五步,修改脚本以防止攻击,在“/root/WebGoat-5.3_RC1/tomcat/webapps/webgoat/javascript
”中找到DOMXSS.js,修改成:
function displayGreeting(name) {
if (name != ''){
document.getElementByIdx_x("greeting").innerHTML="Hello, " +escapeHTML(name); + "!";
}
}
保存,然后回到页面,尝试进行攻击,失败了,提示课程完成。escapeHTML是啥可在同目录中找到它,一看便知。
DOM Injection
在输入框中输入任意字符
使用webscarab拦截response,将response的body替换为
“document.forms[0].SUBMIT.disabled = false;”
还有一种在Firefox中可行的方法是直接用firebug修改网页源码,将按钮的属性disabled=‘’去掉就行了
[XML Injection]
使用webscarab拦截response
在root标签中加入另外两个商品
<reward>WebGoatCore Duo Laptop 2000 Pts</reward>
<reward>WebGoatHawaii Cruise 3000 Pts</reward>
点击acceptchanges,另外两个商品的信息已经出现
[JSONInjection]
使用webscarab拦截response
将第一个航班的价格改为100,提交
或者用firebug修改
[SilentTransactions Attacks]
首先填入账号,然后填入转账金额,一定不要超过当前帐户的最大余额,因为网页是在客户端通过JavaScript来验证用户输入的金额是否大于账户余额的
提交后,使用webscarab拦截request,
将amount改为1000000
[InsecureClient Storage]
请原谅我未找到,这是从网上找的答案
启用firebug,在如下位置设置断点
**
**
输入任意字符开始调试
当鼠标停在decrypted上面时,可以看到他的值为PLATINUM,这个值就是code的值
在firebug中查找GRANDTOT,将他的readonly属性去掉,
这样就可以修改下面的值,将其修改为0从而免费获得商品
Dangerous Use of Eval
Eval是php语言中执行一段JS代码的意思,这一道题也是一种典型的反射型XSS展示,与刚刚基于DOM的不同,DOM是直接插入新节点,而这个是使用一定技巧,先关闭原本的DOM,然后写自己的DOM,再组装好刚刚被关闭DOM的后半部分.通过php的Eval,alert被执行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
把这两个网址再输入一次就可以了