WebGoat<三> AJAX Security : AJAX安全

01、LAB: Client Side Filtering :客户端过滤
查找Neville Bartholomew 的工资是多少?

客户端过滤,有些时候服务器返回的了很多条信息,只挑选了其中少数进行显示,可以在返回的html源码中看到全部的信息.
选中名字附近元素点击"检查"
在源码中搜索关键词"hidden" "Joanne"等
发现有3个"Joanne",其中一个隐藏了Neville的信息

或 直接抓包-->放包 一步到位

注意:一定要先点开看到别人的额工资后,再看html源码。因为刚开始客户端是没有工资数据的,只有看到别人的工资了,才把数据都返回给客户端了

WebGoat<三> AJAX Security : AJAX安全_第1张图片
WechatIMG125.jpeg
WebGoat<三> AJAX Security : AJAX安全_第2张图片
WechatIMG124.jpeg

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 图片来污染网页


第一步,让我们用一个图片来作为名字的输入,从而篡改页面。随便输入姓名页面马上就显示了,于是输入:

屏幕快照 2017-07-09 16.33.16.png

提交后STAGE1完成,,owasp的页面就被调用显示了。

第二步,通过使用image的标签制造一个JS的警告弹出,输入:


,提交,成了。

第三步,用IFRAME标签创造一个JS警告弹出,输入:
,提交,成了。

第四步,复制给出的内容提交,页面被改成一个密码输入窗口,随便写点儿啥提交,内容就被截获了,也就是刚才介绍的那种供给情况,攻击者可以获取受害者的信息。

第五步,修改脚本以防止攻击,在“/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标签中加入另外两个商品
WebGoatCore Duo Laptop 2000 Pts
WebGoatHawaii Cruise 3000 Pts
点击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
把这两个网址再输入一次就可以了

你可能感兴趣的:(WebGoat<三> AJAX Security : AJAX安全)