前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WebGoat靶场系列---AJAX Security(Ajax安全性)

WebGoat靶场系列---AJAX Security(Ajax安全性)

作者头像
Ms08067安全实验室
发布2019-09-24 15:34:50
2.5K0
发布2019-09-24 15:34:50
举报
文章被收录于专栏:Ms08067安全实验室

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安全实验室

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ms08067安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档