JSONP跨域劫持(JSON Hijacking)和跨域读取资源导致信息泄露
JSONP跨域劫持(JSON Hijacking)和跨域读取资源导致信息泄露
如果对于跨域读取资源不严格:⽤⼾登录了⼀个购物站点A,其中
http://shop.com/html/servicereq/queryMessageList?callback=phoneNumber
返回的是⽤⼾的⼿机号,格式是
phoneNumber({"phonenumber":"13399978910"}),那么,当⽤⼾访问的恶意站点B的时候,B⻚⾯中通过jsonp去跨域请求 http://shop.com/html/servicereq/queryMessageList?callback=phoneNumber这个⻚⾯,那么当前⽤⼾的⼿机号就被恶意获取了。
同源策略(Same origin policy)
同源策略(Same origin policy)是⼀种约定,它是浏览器最核⼼也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。同源策略规定:不同域的客⼾端脚本在没有授权的情况下,不能读写对⽅的资源。
相同域名,端口相同,协议相同,缺⼀不可。
跨域
AJAX
Asynchronous JavaScript AND XML,全称是异步的Javascript和XML。是指⼀种创建交互式、快速动态⽹⻚应⽤的⽹⻚开发技术,⽆需重新加载整个⽹⻚的情况下,能够更新部分⽹⻚的技术。XML是说数据传输的格式是XML,但其实返回的数据还有可能是JSON(⽬前已经成为主流),⽂本,HTML等。
AJAX没法跨域获取数据
可以跨域的标签
<scriptsrc="..."></script>
<imgsrc="...">
<videosrc="..."></video>
<audiosrc="..."></audio>
<embedsrc="...">
<framesrc="...">
<iframesrc="..."></iframe>
<linkrel="stylesheet"href="...">
........
我们看到,<srcipt>标签是可以跨域读取数据的,所以我们当然可以使⽤这个标签来跨域请求远程资源,但是,<script>标签是负责执⾏JS的,但是AJAX返回的是JSON数据,不符合JS语法,所以我们只有想办法通过回调函数
<script>
functioncallback(data){
alert(data.name);
}
</script>
callback({"id":"1","name":"⼩王"}) </div>
JSONP
JSONP 全称是 JSON with Padding ,是基于 JSON 格式的为解决跨域请求资源而产⽣的解决⽅案。他实现的基本原理是利⽤了 HTML ⾥
<script></script>
元素标签,远程调⽤ JSON ⽂件来实现数据传递。
挖掘思路
1.寻找jsonp接口
site:target.cominurl:?callback
2.在请求中去寻找
url ---> https://github.com/Acmesec/PoCBox#pocbox---%E6%BC%8F%E6%B4%9E%E6%B5%8B%E8%AF%95%E9%AA%8C%E8%AF%81%E8%BE%85%E5%8A%A9%E5%B9%B3%E5%8F%B0 测试此漏洞可以用的平台