• / 33
  • 下载费用:5 金币  

33-JSONwithPadding安全攻防技术.pptx

关 键 词:
33 JSONWITHPADDING 安全 攻防 技术
资源描述:
JSON with Padding安全攻防技术,何权文 2015140490殷丹平 2015140126,目录,1、Json介绍,JSON全名JavaScript Object Notation 是一种轻量级的数据交换格式可以将JavaScript 对象中表示的一组数据转换为字符串达到在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序的效果,2、JS中的同源策略,JavaScript中一个很重要的安全性限制,即“Same-Origin Policy”(同源策略)JavaScript只能访问与包含它的文档在同一源下的内容同源即域名、协议、端口均相同根据这个策略,在baidu.com下的页面中包含的JavaScript代码,不能访问在google.com域名下的页面内容;甚至不同的子域名之间的页面也不能通过JavaScript代码互相访问。,3、什么是JSONP(1),由于同源策略的限制,XmlHttpRequest只允许请求当前源的资源如果要进行跨域请求, 我们可以通过使用html的script标记来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。 这种跨域的通讯方式称为JSONP。,3、什么是JSONP(2),JSONP全称是JSON with Padding是基于JSON格式的为解决跨域请求资源而产生的解决方案是一种利用在页面中创建节点的方法向不同域提交HTTP请求的方法用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。,4、JSONP跨域原理(1),JSONP可以实现动态添加一个标签,而script标签的src属性没有跨域的限制,从而这种跨域方式与ajax XmlHttpRequest协议无关。JSONP作为一个非官方的协议,允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问。,4、JSONP跨域原理(2),执行过程:在客户端注册一个callback把callback的名字传给服务器。此时,服务器先生成 json 数据以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端客户端浏览器解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里,4、JSONP跨域原理(3),假设在http://example1.com/index.php这个页面中向http://example2.com/getinfo.php提交GET请求,我们可以将下面的JavaScript代码放在http://example1.com/index.php这个页面中来实现:var eleScript= document.createElement("script");eleScript.type = "text/javascript";eleScript.src = http://example2.com/getinfo.php;document.getElementsByTagName("HEAD")[0].appendChild(eleScript);,4、JSONP跨域原理(4),当GET请求从http://example2.com/getinfo.php返回时,可以返回一段JavaScript代码,这段代码会自动执行,可以用来负责调用http://example1.com/index.php页面中的一个callback函数。,目录,1、JSONP劫持(1),JSON劫持又称“JSON Hijacking”这个问题属于CSRF(Cross-site request forgery跨站请求伪造)攻击范畴当某网站通过JSONP的方式跨域(一般为子域)传递用户认证后的敏感信息时,攻击者可以构造恶意的JSONP调用页面,诱导被攻击者访问,以达到截取用户敏感信息的目的。,1、JSONP劫持(2),一个典型的JSON Hijacking攻击代码如下:这是乌云上报告的一个攻击案例(WooYun-2012-11284),当被攻击者登录360网站并访问该网页时,个人隐私数据(如用户名、邮箱等)可能被攻击者劫持。,2、JSONP水坑攻击(1),首先,恶意JavaScript脚本会向一个有漏洞的服务器发起一个带有标签的JSONP请求。脚本请求了renren_all的函数调用:,2、JSONP水坑攻击(2),含有漏洞的网站通过callback获取响应数据当浏览器收到数据之后,它会调用renren_all回调函数,该功能函数会将用户的个人数据发送至一个由攻击者控制的服务器中,这些数据包括用户的性别,生日,真实姓名以及ID号等等。,2、JSONP水坑攻击(3),在发送完了所有的JSONP请求之后,恶意JavaScript脚本会将数据发送至一个由攻击者控制的服务器中。,2、JSONP水坑攻击(4),例子:QQMail邮件泄漏漏洞,目录,1、JSONP攻击实验,实验一:漏洞挖掘挖掘JSONP接口,获取用户信息1.手动挖掘这里我采用 chrome浏览器的调试窗口进行挖掘weibo.com 中存在的漏洞。首先把 Preserve log 选项勾上,这样用来防止页面刷新跳转的时候访问记录被重置,也方便我们进行下一步的筛选。,实验一.漏洞挖掘,然后,我们就可以在地址栏输入weibo.com ,进行登录,在页面中随便点击链接,以收集更多的URLCtrl+F 进行搜索筛选,搜索关键字是一个绝活,你可以站在程序员的角度去想,写这个接口的规范一般是在服务端接收 callback 参数。所以我们可以搜索 callback 关键字:,实验一.漏洞挖掘,实验一.漏洞挖掘,实验一.漏洞挖掘,2.搜索挖掘根据上面的关键字,我们直接带入搜索引擎:,这种方式简单易行,但没有第一种准确,2、JSONP攻击实验,实验二:漏洞高级利用1.定位钓鱼通过 JSONP 获取的数据来判断当前个人的信息,如邮箱、博客、微博等再进行针对性地钓鱼。这样,你可以利用获取到的信息降低被攻击者的防范意识。比如你弹框 请输入您的登录密码 可能会让用户产生怀疑,但是你要是这么写: 亲爱的YD,请输入您的登录密码 ,那成功率会不会更大了呢?,实验二:漏洞高级利用,,,实验二:漏洞高级利用,2.二次结合在对一个购物网站进行挖掘的过程中,发现有的接口必须先知道用户的信息才能进一步获取我们需要的数据,那么,就得采用二次结合的方法来进行利用了。假设,我们挖掘到了两个jsonp 接口:1.http://root.cool/userinfo?callback=test 2.http://root.cool/usercoin? nickname=ANT&callback=xxxx,实验二:漏洞高级利用,我们要获取的是第二个接口的数据,但是第二个接口必须知道 nickname 参数,而 nickname 参数可以在第一个接口中获取,如下:#!javascript function fn1(data) { API.loadJS(‘http:// root.cool/usercoin?nickname=’ + data.nickname + ‘,实验二:漏洞高级利用,3.密码猜解攻击假设我们需要利用xss攻破目标的路由,但是弱口令尝试失败,那么,我们就可以通过获取到的 JSONP 数据信息进行密码的组合、搜索。 比如获取到微博 antoor ,那可以组合出 antoor123 、 antoor123456 等密码,也可以通过获取到的邮箱、QQ等进行在线“数据泄漏查询”接口进行密码查询返回,然后进行攻击,实验二:漏洞高级利用,数据泄漏查询,也就是“社工库”的接口设计,我们要进行跨域查询,可以选择 JSONP 的方式,也可以通过设置 headers 中的 Access-Control-Allow-Origin 为 * 进行跨域允许。PHP代码例子如下#!php header('Access-Control-Allow-Origin: *');header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With');,目录,JSONP防御,严格安全地实现CSRF方式调用JSON文件:限制Referer部署一次性token等。严格安装JSON格式标准输出Content-Type及编码(Content-Type: application/json; charset=utf-8)。严格过滤callback函数名及JSON数据的输出。严格限制对JSONP输出callback函数名的长度(例如防御上面Flash输出的方法)。其他方法:例如在callback输出前加入其他字符(如/**/、换行符等)这样不影响JSON文件加载,又能一定程度预防其他文件格式的输出。Gmail就曾使用AJAX的方式获取JSON,通过在输出JSON之前加入while(1);这样的代码防止JavaScript远程调用。,JSONP防御,尽量避免跨域的数据传输,对于同域的数据传输使用xmlhttp的方式作为数据获取的方式,依赖于javascript在浏览器域里的安全性保护数据referer的来源限制,利用前端referer的不可伪造性来保障请求数据的应用来源于可信的地方token的加入,利用token对调用者的身份进行认证,这种方式对于调用者的身份会要求力度较细对于同域的json使用情况下,可以在数据的输出头部加入while(1);的方式避免数据被script标签的方式引用,谢谢!,,
展开阅读全文
1
  金牌文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:33-JSONwithPadding安全攻防技术.pptx
链接地址:http://www.gold-doc.com/p-256497.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们
copyright@ 2014-2018 金牌文库网站版权所有
经营许可证编号:浙ICP备15046084号-3
收起
展开