WebGoat系列实验AJAX Security
WebGoat系列实验AJAX Security
DOM Injiction
- 实验对象是一个接受激活密钥后允许你访问的系统,实验目标是尝试将激活按钮变得可以点击。
- 直接修改页面代码激活按钮,Chrome浏览器下F12查看网页源代码,找到按钮对应的代码
<input disabled="" id="SUBMIT" value="Activate!" name="SUBMIT" type="SUBMIT">
那一行,将disabled删除,就可以点击激活按钮了。
LAB: DOM-Based cross-site scripting
- 实验需要使用指定图片涂改网站。在输入框中输入字符串,网站会发送Ajax请求并显示“Hello,[字符串]!”。
- 尝试输入字符串如下:
,结果在字符串的位置显示了图片,说明该网页存在有基于DOM的跨站脚本。
- 尝试使用image标签创建一个JavaScript警告。在输入框中输入<img src = "" onerror = ;alert("XSS!")>,页面会弹出一个警告。
- 尝试使用iframe标签创建一个JavaScript警告。在输入框中输入,页面弹出了一个警告。
LAB: Client Side Filtering
STAGE 1
- 作为Goat Hills Financial的CSO Moe Stooge登录,可以获取除了CEO Neville Bartholomew的公司所有人的信息。需要获取Neville Bartholomew的薪水。
- 查看网页源代码,在id为hiddenEmployeeRecords的table中发现了NB的薪水。
- 还可以重新加载网页,之后使用Burp代理拦截服务器的响应报文,随便选择一个员工查看个人信息,就可以拦截到服务器返回的所有人的薪水。
XML Injection
- 输入账户ID,网页将会显示可以购买的项目。目标是获取应得奖励之外的更多的奖励,需要使用836239作为账户ID。
- 使用Burp拦截服务器的响应报文,输入836239,点击Submit按钮,可以获取到从服务器返回的应得奖励。
- 按照奖励xml文件的格式,在拦截报文中添加其他奖励。
- 释放修改后的服务器响应报文,在页面中出现的可以获得的其他奖励,将所有的奖励勾选之后,点击提交通过。
JSON Injection
- 输入3位的机场代码,一个AJax请求会执行查询票价功能。目标是以更低的价格乘坐直飞的航班。
- 使用Burp拦截报文,在输入框中输入两个机场代码之后,截取到查询价格的报文。分析报文内容可知,并不包含价格的信息,放行报文。
- 在候选的两个航班中选择直飞的航班,点击提交之后会截取到报文,里面包含有价格参数,%24为$符号的十六进制编码,实际价格是600。修改为低于600的数值。
Silent Transactions Attacks
- 如果web应用允许提交简单的URL,那么就会有攻击者在用户未授权的情况下完成交易。这种攻击在AJAX中更加严重,交易不会在页面上给予用户反馈。
- 在实验的银行转账系统中,通过输入用户名与转账金额可以完成转账交易。
- 通过查询网页源代码,发现控制转账的函数submitData(accountNo,balance)位于silentTransaction.js的脚本中。
- 在浏览器中输入javascript:submitData(123,10000),即可完成静默转账。
Insecure Client Storage
STAGE1
- 实验需要找出本次购物需要使用的优惠码。
- 查看网页源代码,发现了用于检查优惠码的脚本。
- 源代码中包含了用于检查优惠码是否有效的函数isValidCoupon(coupon)。
- 在clientSideValidation.js脚本文件开头找到了用于函数isValidCoupon(coupon)的参数。
- 在浏览器的地址栏中输入javascript:alert(decrypt("nvojubmq")),弹窗显示了优惠码,通过。
STAGE2
- STAGE2需要免费购物,使用Burp修改GET请求报文将最终价格修改为0。
Dangerous Use of Eval
- 实验需要包含有脚本的输入,尝试让网页反馈你在浏览器中的输入,必须使用alert()函数输出document.cookie。
- 点击Purchase按钮,根据弹窗的内容,尝试在digit access code的位置进行XSS注入攻击。
- 输入123');alert(document.cookie)😭',点击Purchase按钮,通过实验。