注:
使用为webgoat5-2版本,在我的下载有
webscarab为webscarab-selfcontained-20070504-1631.jar,直接在官网下也可以,github上好像是
【Access Control Flaws】
Using an Access Control Matrix(权限控制矩阵)
题目翻译就是:基于角色控制的访问机制,如果设置不得当,呵呵,就会导致没有admin权限的人,访问到admin才知道的东西。。
题目要求:用不是admin的用户,登录【Account Manager】。。
答案就是:用 Larry 和 Account Manager访问。。
Bypass a Path Based Access Control Scheme(绕过一个基于路径的访问控制方案)
题目翻译:基于路径访问,那么我们可以通过路径改变访问到不属于我们可以访问的文件
题目要求:读出tomcat-users.xml文件
答案:使用Webscarab截取包,把要访问的文件名改成“../../../conf/tomcat-users.xml”
LAB: Role Based Access Control(基于角色的访问控制)
state1:要求在Tom的身份下,实现admin才有的删除操作,John就是个admin,所有用户的密码为首个单词。很简单,又没做身份验证,所以只要把deleteprofile时候的表单复制到viewprofile操作,做做修改就可以啦。
state3和state1相似
state2和state4是修改源码使得漏洞被修复,我用的不是developer版本,做不了,有时间补
Remote Admin Access
这个确实出的有点扯。。
就是要用admin访问一些东西,毕竟我们在guest的用户下,做题关键在下面的Admin Function上。。
在访问的时候,加上 admin=true传递参数过去;我估计这道题出题点是这样考虑的,一般我们在发送网页的时候,发送的到底是admin还是普通用户请求,就是靠一些变量来标识的,所以猜测这个网页的标识是admin,通过get赋值覆盖,使得呈现的内容是admin的。
所以你看,就会得到:
访问的时候要注意,每次都要admin=true加上去。
【AJAX Security】
AJAX即“Asynchronous JavaScript and XML”(异步javascript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。
AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML)。
LAB: DOM-Based cross-site scripting
根据提示,连代码都不用改,最后一个stage5是要手动修改文件抵御攻击。
关于escapeHTML,看看这个http://directwebremoting.org/dwr/documentation/browser/util/escapeHtml.html
LAB: Client Side Filtering
题目要求:以低身份查看你的boss Neville Bartholomew的信息,然后输入她的薪金,就过了第一个stage
解答:你截取包看看它的返回,我一开始误以为提交不同的userId,然后就能得到结果,就用webscarab做了一个fuzz测试,测试了id从100-129的返回,发现返回都是:
这才明白,原来这道题,是把所有人员的信息都down到了本地,所以用Firebug也是可以查到的。
stage2呢就是修改文件,使得攻击不成功。也就是提供条件过滤,题目提示用XPath,不过我真的没学过。。查了一下资料,发现大家都是这么改的:
所以,一定要做过滤啊啊啊啊啊,一定要做权限检查啊啊啊啊啊
Same Origin Policy Protection
你点击两个网址就过关了。
其实这道题是帮助理解题,SOP使得不同源的访问被拒绝。这个实验写得比较好的是,SEEDLabs的
DOM Injection
怎么说,这题我目前也不太懂出题点,似乎是模仿了一般软件的激活证明。好像是,只有激活码对了才能将【Activate!】按钮激活的意思?
反正就去查了源码,发现了脚本:
1
第4行代码,是提交的url,然后用XMLHTTPRequest对象发包。最后应该是用callback()函数做了验证。再看24行,eval()会执行message的信息,估摸着这里面应该要有激活【Activate!】按钮的语句,所以我们截取response,往里面加一句激活语句,试试看。
最好加在body末尾
然后按钮被激活!
ps:其实吧,你把里面disabled属性去掉更快。。
disabled value='Activate!' name='SUBMIT' type='SUBMIT'>
XML Injection
AJAX用xml和用户交互,但是又不做检查,这道题就是想我们用100分买2000分3000分的东西,就试着先买20分的咯,发现它有一个参数checkin1001
买第二件,改成了check1002..所以,猜想,买第四第五件,就是check1004 check1005咯,一修改,就好了。当然,网上还有的做法是,在输入ID后,修改response:
修改代码,在
这样,选择框里就会多出我们要的几项。
这道题就是告诉我们,一定要做检查啊啊啊啊啊
【JSON Injection】
用便宜的票价买贵的机票。
查看一下发送的包,发现传回去的数据参数如下:
travelFrom=BOS&travelTo=SEA&radio1=on&SUBMIT=Submit&price2Submit=%24300
把它改成radio0试试。。
所以,一定要检查,尽量不要信任用户输入。。
Slient Transactions Attacks(默默汇钱,哈哈哈哈)
模仿银行的汇款操作,要求跳过客户端的验证,查看源码,发现onClick=‘processData()’,这是一个验证程序,所以我们要跳过它,两个方法:
1 在加载这个页面的时候,截取response,把OnClick的值直接改成‘submitData()’,然后页面上填写账号和转账额,提交。
2 在浏览器里输入,javascript: submitData(12345567,11111000) 好嘛,居然直接调用函数,我服。。
Dangerous Use of Eval
题目要我们alert出cookie。
Eval可以直接执行里面的语句,运行一遍,发现居然它alert了卡号和三位数字码,我们看这道题的源码
题目又说了是eval的问题,所以估计是添加语句。修改最后一个输入框,123');alert(document.cookie);('
之所以用单引号,我觉得,是试出来的。。
Insecure Client Storage(不安全的客户存储)
事实证明,东西放在客户端是多么。。
stage1:要你,找到一个优惠码(coupon code)
这个优惠码,额,好奇怪的,所以我就查了源码,
然后就在这个函数出加断点,如图:
发现了一个解密后的有效码:PLATINUM
到Stage2:
firebug审查元素,其实也可以在webscarab提交的时候,再修改,这里为了熟悉firebug的使用,所以才用的: