Ajax 即” Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
Ajax = 异步 JavaScript 和 XML 或者是 HTML(标准通用标记语言的子集。
Ajax 是一种用于创建快速动态网页的技术。
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
基于AJAX的Web攻击包括:中间人攻击,动态脚本执行,Json攻击,非信任源对服务器的非法访问。
0x00 Same Origin Policy Protection(同源政策保护)
Ajax的一个关键元素是XMLHttpRequest(XHR),它允许JavaScript从客户端到服务器进行异步调用.但是,作为一种安全措施,这些请求只能发送到产生客户机页面的服务器。
目标:这个练习演示了同一来源的政策保护.XHR请求只能传递回发起服务器.尝试将数据传递到非原始服务器将失败。
依次向URL框框中输入以下网址(也可以直接点击下方链接),观察发现,只能访问同一数据资源,非同源访问失败。
或:
lessons/Ajax/sameOrigin.jsp
http://www.google.com/search?q=aspect+security
0x01 LAB: DOM-Based cross-site scripting(实验室:基于DOM的跨站点脚本)
文档对象模型(DOM)从安全性的角度提出了一个有趣的问题.它允许动态修改网页的内容,但在恶意代码注入期间,攻击者可能会滥用这些内容.XSS是一种恶意代码注入类型,当未经验证的用户输入直接用于修改客户端页面的内容时,可能会发生这种情况。
目标:使用此漏洞向DOM中注入恶意代码。
a) 第一阶段,尝试在输入框输入<img src=”images/logos/owasp.jpg” />
b) 第二阶段,尝试使用images标签创建JavaScript警报(加载图片出现事故,就会触发onerror事件)
<img src=test onerror=”alert(‘this is xss test’)”>
c) 第三阶段尝试使用iframe标签创建JavaScript警报(iframe标签会创建一个包含另一个文档的内联框架)
<iframe src=javascript:alert(0)></iframe>
d) 第四阶段,使用一下命令创建假的登陆表单(复制即可)
e) 第五阶段,将DOMXSS.js改为下图
0x02 LAB: Client Side Filtering(实验室:客户端过滤)
过多的信息被发送到客户机,从而造成严重的访问控制问题。
目标:利用服务器返回的无关信息发现本不应该访问的信息。
1.第一阶段,查找大BOSS,Neville Bartholomew的工资,按F12,打开网页调试,经过好一番寻找,终于在选择用户的下拉框附近找到一个隐藏的div,如图
2.阶段二,修复此处漏洞,找到WebGoat下lessons/Ajax/clientSideFiltering.jsp修改一下部分添加过滤器,授权只有管理人员才能查看其他人员信息。
0x03 DOM Injection(DOM注入)
原理:一些应用程序特别是使用AJAX的应用程序使用javascript,DHTML和eval()方法直接操作和更新DOM.攻击者可以通过截取回复并尝试注入一些javascript命令来利用他的攻击来利用它。
尝试使提交按钮的隐藏取消,使用了最简单暴力的方法,进入到浏览器的开发者模式中,手动删掉了disabled=””,成功通关
0x04 XML Injection(XML注入)
原理:AJAX应用程序使用XML与服务器交换信息.恶意攻击者可以轻松拦截和更改此XML。
目标:尝试使自己获得更多的奖励。
基本思路大致和DOM注入类似,输入ID后,通过抓包发现传入参数的规律,索性直接加上&check1004=on&check1005=on测试一下,结果一次通过。
0x05 JSON Injection(JSON注入)
原理: JavaScript Object Notation(JSON)是一种简单有效的轻量级数据交换格式。JSON可以有很多形式,例如数组,列表,哈希表和其他数据结构.JSON广泛用于AJAX和Web2.0应用程序,并且由于其易用性和速度而受到程序员对XML的青睐.但是,JSON和XML一样容易受到注入攻击.恶意攻击者可以从服务器注入回复并在其中注入一些任意值。
目标:在两个航班A(无停靠,价格昂贵)和B(有停靠,价格便宜)中,获取到一个没有停靠,但是价格便宜的航班。
首先,打开浏览器调试工具,定位到目标位置,将数值改小即可
0x06 Silent Transactions Attacks(无声交易攻击)
原理: 任何使用单个提交静默处理事务的系统对客户端都是危险的,ajax直接与后台进行数据交互,发生在页面上没有用户反馈的情况下。
目标:尝试绕过用户的授权,静默执行。
在页面定位到提交按钮,发现,点击按钮触发processData()函数,通过页面搜索,找到这个函数的位置,可知,它用来判断输入,来与后台交互
而下方submitData()函数,则是提交结果,来吧processData()改成submitData(123,123)
成功
0x07 Dangerous Use of Eval(危险使用Eval)
原理:未经验证的用户提供的数据与Javascript eval()调用一起使用.在反映的XSS攻击中,攻击者可以使用攻击脚本制作URL并将其存储在另一个网站上,通过电子邮件发送或以其他方式欺骗受害者点击它。
目标:在enter your three digit access code中存在此漏洞,这些输入将执行恶意脚本,要通过本课,您必须” alert()” document.cookie
观察,在开发者选项中,可以找到eval.js,即可能存在eval漏洞
enter your three digit access code中输入以下代代码然后提交即可完成:
123');alert(document.cookie);('
服务端返回的结果为
eval(‘123’);
alert(document.cookie);
(‘’)
0x08 Insecure Client Storage(不安全的客户端存储)
原理:将验证机制留在客户端,从客户端进行验证码等验证。
目标:寻找优惠券的代码并利用客户端验证提交成本为0的订单。
1.寻找优惠券代码
定位到输入框的位置,发现,存在一个键盘事件,会使用AJAX后台检测输入,
定位到form表单处,看到触发事件的位置是一个JS文件
找到此文件的isValidCoupon(),有一个判断语句,大概就是判断优惠券代码对错的了
设置断点,然后随便输入一个数字,提交这东西貌似就是我们要找的,试一下
成功
2.尝试免费获取整个订单
将所有价格在页面改为0,然后输入数量
成功
作者:小英雄宋人头
来源:Ms08067安全实验室
本文分享自 Ms08067安全实验室 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!