现在越来越多的大公司开始建立自己的安全应急响应中心,以用来发现并修复自己的漏洞,接下来我们就来说一下如何去挖这些src的漏洞。
这次介绍的是一个比较简单的JSON Hijacking漏洞的挖掘,通过学习这篇文章我们可以了解到Hi jacking漏洞的原理,如何挖掘该漏洞,挖掘过程中的一些小技巧以及修复此类漏洞的一些方法。首先我们要先了解一些JSON Hijacking漏洞的相关知识点。
1、json是什么?
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。JSON最常用的格式是对象的键值对,例如下面这样:
{"firstName": "Brett", "lastName": "McLaughlin"}
2、JSON 与 JS 对象的关JSON 与 JS 对象的关系系
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串,例如:
var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的 var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串
3、JSON 和 JS 对象的相互转换
要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'
要实现从 JSON 转换为对象,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}
4、JSON Hijacking漏洞原理
JSON实际应用的时候会有两种传输数据的方式:
xmlhttp获取数据方式:
{“username”:”wooyun”,”password”:”wooyun”}
当在前端获取数据的时候,由于数据获取方和数据提供方属于同一个域下面,所以可以使用 xmlhttp的方式来获取数据,然后再用xmlhttp获取到的数据传入自己的js逻辑如eval。
script获取数据方式:
userinfo={“username”:”wooyun”,”password”:”wooyun”}
如果传输的数据在两个不同的域,由于在javascript里无法跨域获取数据,所以一般采取script标签的方式获取数据,传入一些callback来获取最终的数据,这就有可能造成敏感信息被劫持。
所以,总的来说就是网站以JSON形式输出数据,且其中包含用户敏感信息,攻击者通过第三方站点以CSRF手段使用户浏览器请求目标站点得到包含敏感信息的JSON数据,进而劫持到敏感信息。
原理就先说到这里,更多关于JSON的信息,如果感兴趣大家可以自行百度,下面就是漏洞实例讲解了。
漏洞实例
这里假设一个场景,你想要知道女神的家庭住址,那我们首先就要找到类似于购物或者外卖的网站,因为这种网站基本都有收货地址这条敏感信息(实际中不仅限于收货地址,任何敏感信息都可以,甚至用于用户认证的关键参数)。
首先,可以在网页所有可能返回收货地址的地方都操作一遍,比如这种地方。
之后呢,再通过BURP的HTTP history功能寻找以json形式返回的带有敏感数据的数据包,像这样的。
如果找到这样的地方,恭喜你已经成功了百分之50了,接下来就是进一步验证漏洞是否存在了。
将刚才找到的URL复制下来,然后直接复制到浏览器中打开,如果浏览器中也成功返回了用户的所有信息,那基本可以判定,这里可能并没有做一些类似于Referer验证的操作。
到这里,基本可以确定漏洞存在了,接下来我们就可以编写一个简单的验证代码,进一步证明漏洞存在。
<script> function jsonp1(json){ alert(JSON.stringify(json)) } </script> <script src="https://***.com/pub/***/PointsMall/QueryAddress?callback=jsonp1"></script>
复现的时候很简单,直接把上面的代码copy下来,然后拿你找到的url去替换掉源代码中的src后面的链接,注意callback后面接的那个参数要和function后面的函数名保持一致,然后保存为**.html,然后把它放到你自己的服务器上,然后打开链接之后,提示如下:
到这里我们就成功挖到了src的一个简单的漏洞了,成功在我们域下劫持到了目标域下的敏感信息。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/54665.html