WebGoat系列实验AJAX Security

DOM Injiction

  1. 实验对象是一个接受激活密钥后允许你访问的系统,实验目标是尝试将激活按钮变得可以点击。
  2. 直接修改页面代码激活按钮,Chrome浏览器下F12查看网页源代码,找到按钮对应的代码
<input disabled="" id="SUBMIT" value="Activate!" name="SUBMIT" type="SUBMIT">

那一行,将disabled删除,就可以点击激活按钮了。

LAB: DOM-Based cross-site scripting

  1. 实验需要使用指定图片涂改网站。在输入框中输入字符串,网站会发送Ajax请求并显示“Hello,[字符串]!”。
  2. 尝试输入字符串如下:,结果在字符串的位置显示了图片,说明该网页存在有基于DOM的跨站脚本。
  3. 尝试使用image标签创建一个JavaScript警告。在输入框中输入<img src = "" onerror = ;alert("XSS!")>,页面会弹出一个警告。
  4. 尝试使用iframe标签创建一个JavaScript警告。在输入框中输入,页面弹出了一个警告。

LAB: Client Side Filtering

STAGE 1

  1. 作为Goat Hills Financial的CSO Moe Stooge登录,可以获取除了CEO Neville Bartholomew的公司所有人的信息。需要获取Neville Bartholomew的薪水。
  2. 查看网页源代码,在id为hiddenEmployeeRecords的table中发现了NB的薪水。
  3. 还可以重新加载网页,之后使用Burp代理拦截服务器的响应报文,随便选择一个员工查看个人信息,就可以拦截到服务器返回的所有人的薪水。

XML Injection

  1. 输入账户ID,网页将会显示可以购买的项目。目标是获取应得奖励之外的更多的奖励,需要使用836239作为账户ID。
  2. 使用Burp拦截服务器的响应报文,输入836239,点击Submit按钮,可以获取到从服务器返回的应得奖励。
  3. 按照奖励xml文件的格式,在拦截报文中添加其他奖励。
  4. 释放修改后的服务器响应报文,在页面中出现的可以获得的其他奖励,将所有的奖励勾选之后,点击提交通过。

JSON Injection

  1. 输入3位的机场代码,一个AJax请求会执行查询票价功能。目标是以更低的价格乘坐直飞的航班。
  2. 使用Burp拦截报文,在输入框中输入两个机场代码之后,截取到查询价格的报文。分析报文内容可知,并不包含价格的信息,放行报文。
  3. 在候选的两个航班中选择直飞的航班,点击提交之后会截取到报文,里面包含有价格参数,%24为$符号的十六进制编码,实际价格是600。修改为低于600的数值。

Silent Transactions Attacks

  1. 如果web应用允许提交简单的URL,那么就会有攻击者在用户未授权的情况下完成交易。这种攻击在AJAX中更加严重,交易不会在页面上给予用户反馈。
  2. 在实验的银行转账系统中,通过输入用户名与转账金额可以完成转账交易。
  3. 通过查询网页源代码,发现控制转账的函数submitData(accountNo,balance)位于silentTransaction.js的脚本中。
  4. 在浏览器中输入javascript:submitData(123,10000),即可完成静默转账。

Insecure Client Storage

STAGE1

  1. 实验需要找出本次购物需要使用的优惠码。
  2. 查看网页源代码,发现了用于检查优惠码的脚本。
  3. 源代码中包含了用于检查优惠码是否有效的函数isValidCoupon(coupon)。
  4. 在clientSideValidation.js脚本文件开头找到了用于函数isValidCoupon(coupon)的参数。
  5. 在浏览器的地址栏中输入javascript:alert(decrypt("nvojubmq")),弹窗显示了优惠码,通过。

STAGE2

  1. STAGE2需要免费购物,使用Burp修改GET请求报文将最终价格修改为0。

Dangerous Use of Eval

  1. 实验需要包含有脚本的输入,尝试让网页反馈你在浏览器中的输入,必须使用alert()函数输出document.cookie。
  2. 点击Purchase按钮,根据弹窗的内容,尝试在digit access code的位置进行XSS注入攻击。
  3. 输入123');alert(document.cookie)

    WebGoat系列实验AJAX Security的更多相关文章

    1. WebGoat系列实验Injection Flaws

      WebGoat系列实验Injection Flaws Numeric SQL Injection 下列表单允许用户查看天气信息,尝试注入SQL语句显示所有天气信息. 选择一个位置的天气,如Columb ...

    2. WebGoat系列实验Cross-Site Scripting (XSS)

      WebGoat系列实验Cross-Site Scripting (XSS) PhishingTitle 本次实验是在一个已知存在XSS漏洞的页面进行钓鱼攻击.通过使用XSS与HTML注入,在页面中注入 ...

    3. WebGoat系列实验Denial of Service & Insecure Communication

      WebGoat系列实验Denial of Service & Insecure Communication ZipBomb 服务器仅接收ZIP文件,将上传的文件解压,进行操作之后删除.已知服务 ...

    4. WebGoat系列实验Buffer Overflows & Code Quality & Concurrency

      WebGoat系列实验Buffer Overflows & Code Quality & Concurrency Off-by-One Overflows 实验需要访问OWASP Ho ...

    5. WebGoat系列实验Authentication Flaws

      WebGoat系列实验Authentication Flaws Forgot Password Web应用经常给用户提供取回密码的功能,但是许多应用的实现策略实现的很差,用于验证用户的信息非常简单. ...

    6. WebGoat系列实验Access Control Flaws

      WebGoat系列实验Access Control Flaws Using an Access Control Matrix 在基于角色的访问控制策略中,每个角色都代表了一个访问权限的集合.一个用户可 ...

    7. 黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block

      原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block 开发人员经常编写需要安全功能的应用程序.这些应用程序 ...

    8. Mininet 系列实验(六)

      写在前面 这次实验遇到了非常多问题,非常非常多,花了很多时间去解决,还是有一些小问题没有解决,但是基本上能完成实验.建议先看完全文再开始做实验. 实验内容 先看一下本次实验的拓扑图: 在该环境下,假设 ...

    9. Mininet 系列实验(四)

      实验内容 本次实验拓扑图: 在该环境下,h0 向 h1 发送数据包,由于在 mininet 脚本中设置了连接损耗率,在传输过程中会丢失一些包,本次实验的目的是展示如何通过控制器计算路径损耗速率(h0- ...

    随机推荐

    1. Python Indentation

      In Python, code blocks don't have explicit begin/end or curly braces to mark beginning and end of th ...

    2. RabbitMQ 权限分离&HA操作文档

      概要 默认情况下,使用帐号guest帐号登陆MQ,所有用户的queue信息,全部创建在根目录/的virtual host下,而这样,就会导致,任一用户登录后,都能看到其他用户的queue信息. 针对以 ...

    3. vs2013-zlib1.2.8编译使用

      1.编译步骤 a.先用vs2013命令行执行下bld_ml32.bat批处理 b.将inffas32.obj和match686.obj复制到目录zlib128\zlib-1.2.8 c.打开zlib- ...

    4. Chroma Oracle 安装宝典,吐血整理

      尼玛,太坑爹!安装: 1.Chroma Application Service 2. PL SQL 安装Oracle 11g 的步骤和过程: 第一步:只能安装 Oracle 11g 64 bit 数据 ...

    5. Python网络编程中的select 和 poll I/O复用的简单使用

      首先列一下,sellect.poll.epoll三者的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select ...

    6. Python numpy函数:reshape()

      reshape()函数用于改变数组对象的形状: import numpy as np a = np.array([1,2,3,4,5,6,7,8]) #转换成2D数组 b = a.reshape((2 ...

    7. java流类共享篇

      总结: package com.aini; import java.io.*; import java.util.StringBuffere; public class tyt { public st ...

    8. java 基础知识学习

      1:  JDK VS  JRE JDK: java开发工具包,提供编译和运行环境,将java编译成字节码文件,即.class文件.JDK有三个版本: j2SE,  J2EE,  j2me jre: 运 ...

    9. RegisterUserFunc为测试对象添加新方法或重写已有方法

      QTP中为了提高扩展性,提供了一个为测试对象添加一个新的自定义方法,或者重写测试对象已有的方法的函数RegisterUserFunc,在此给大家分享一下. RegisterUserFunc:为测试对象 ...

    10. QT5提示can not find -lGL的解决方法

      这是由于 Qt5.0 默认将OpenGL加入了工程,但是在机器上没有安装OpenGL,所以jonas只需要在机器上安装OpenGL即可 .   安装建立基本编译环境 首先不可或缺的,就是编译器与基本的 ...