一、关于jsonp

1.1 JSONP 全称是 JSON with Padding ,是基于 JSON 格式的为解决跨域请求资源而产生的解决方案。他实现的基本原理是利用了
HTML 里 <script></script> 元素标签,远程调用 JSON 文件来实现数据传递。

我们废话不多说直接演示

首先我们创建json_demo.php


这里我们自己写了一个简单的回调,我们来访问他试一试

如上操作就是jsonp的使用

继续我们的操作,创建jsonp.html文件

<script> 
function test(json)
{
	alert(JSON.stringify(json))
}
</script>
<script src="http://127.0.0.1/json_demo.php?callback=test"></script>

在我们的使用过程中是只需要替换src“”内的内容和fuciton对应的回调函数即可

保存之后访问json.html

成功的弹出了我们的信息

二、json劫持

JSON 劫持又为“ JSON Hijacking ”,最开始提出这个概念大概是在 2008 年国外有安全研究人员提到这个 JSONP 带来的风险。其实这个问题属于 CSRF( Cross-site request forgery 跨站请求伪造)攻击范畴。

我们在json劫持的挖掘过程中最重要的就是寻找回调函数和敏感信息,然后就是referer有没有进行校验,结合poc证明漏洞危害

我们这里介绍一个某搜索引擎旗下的资产的某处案例,可以像符合上述除敏感外所有条件所以做案例很好


这个是个号码查询处,本身时不存在json劫持的,为了做案例就充当一下

我们只需要将我们上述的json劫持的poc做一个修改就可以了


成功的获取了一些没有卵用的数据,在实战过程中只要到了能弹窗敏感信息就可以直接提交了

我们要提一句的是callback自身存在的安全问题

因为我们正常都是要吧callback直接输出到页面上的,那么也就是说我们可以利用callback进行反射xss

那么我们尝试一下


弹窗成功了,所以他不仅仅是一个json劫持还可以在写一个反射型xss

三、总结

json劫持的挖掘思路离不开的是敏感信息,还有就是我们能不能跨域,是否有callback回调,是否有referer头的限制。