DEFCON CHINA议题解读 | 你上我的帐号!你要干啥?(PPT下载)

DEFCON CHINA世界顶级黑客大会

全球顶级安全会议“御·见未来”2018首届DCCB(DEF CON CHINA Baidu)安全行业国际峰会在北京正式开幕,大会由DEF CON和百度安全联合主办。DEF CON是全球安全领域的顶级会议,被誉为安全界“奥斯卡”,由全球最具影响力形象最正面的极客Jeff Moss创办,迄今已有25年历史。大会共设议题演讲,CTF比赛、Hack Villages三大板块。本届DEF CON CHINA将延续DEF CON传统议程和赛制,召集全球网络顶尖安全专家与技术爱好者汇集于此,分享时下前沿安全技术与课题研究成果。

开幕首日,议题演讲的现场就爆满,用people mountain people sea来形容,绝不夸张。

安全客将会对大会的议题演讲和Hack Villages进行系列报道,Now,让我们一起来了解今天呆子不开口老师分享的议题《你上了我的账号》。

正常攻击者的思维都是找到漏洞,主动攻击,但是呆子不开口老师为我们提供了一个新的思路。使用常见的漏洞诱导受害者主动上勾登陆攻击者的账号,再结合一些其他的漏洞,进而窃取受害者的信息。

讲师介绍

呆子不开口,资深安全从业者

  • 擅长web漏洞挖掘和安全架构
  • 锤子手机软文大赛一等奖获得者
  • 喜欢的运动是足球
  • 喜欢的球星是厄齐尔

《你上了我的账号》议题概要

PPT下载链接:https://pan.baidu.com/s/1iNUr1tB-mP97jw4OKzB9iw

本议题介绍了一些互联网上诱导受害者登录攻击者账号的方式,以及由此产生的一些漏洞和攻击场景,同时也会聊聊如何修复此类问题。这种安全风险往往被人忽视,但它可以给某些漏洞利用过程提供重要的帮助,甚至结合csrf、selfxss、oauth、sso的一些低危漏洞或特性可以形成盗取登录凭证、第三方后门账号、窃取隐私、钓鱼攻击、盗取资源、冒用身份等攻击。

未知攻焉知防,不因善小而不为,不以洞小就不修!

开场呆子不开口老师先介绍了曾经发现的“上别人账号”的漏洞,仔细一看,互联网上诱导受害者登录攻击者账号的方式真是五花八门,各有门路。

互联网上诱导受害者登录攻击者账号的方式

1、login csrf

登录表单没有做csrf防护,可以直接让受害者使用攻击者的用户密码登录

例如:浏览器会记录用户的上网行为,如果用户登陆了攻击者的账号,那么他的上网行为就会被攻击者了解。

2、Setcookie

一些网站有setcookie的接口,可以用来设置登录cookie

http://www.website.com/setcookie.php?key=XXXXXXXX

3、链接传递登陆凭证

一些网站或者app有接受票据的接口,可以用来完成登陆

http://login.website.com/sso.php?token=XXXXXXXX

URL Scheme传递密码或凭证

4、二维码扫描登陆

本地调接口生成二维码,扫描授权,轮询查询接口后拿到授权成功后的链接,让受害者访问链接完成登录,比如

https://wx.website.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=XXXXXX&uuid=gab7NVa-HA==&lang=zh_CN&scan=1525192841

5、第三方账号登陆

先登录攻击者的账号,再利用可能存在缺陷的地第三方攻击者账号登陆

6、社会工程学

直接和目标用户进行物理接触,比如线下网友见面,直接面对面沟通套取对方的姓名/生日/年龄/住址等信息。

 

产生的一些漏洞和攻击场景

登录攻击者的网站账号

场景一:上网行为

用户产生行为,攻击者来读取

  • 搜索网站的搜索记录
  • 一些视频网站的浏览记录

攻击者写入内容,影响用户行为

  • 影响搜索记录,变相内容推荐
  • 可能的钓鱼攻击,邮件引导用户打开网站,内容是由攻击者控制的

场景二:用户输入

用户不知情输入内容,攻击者读

  • 对方在支付时,输入信用卡号
  • 钓鱼邮件诱导用户在合法页面输入收货地址
  • 记事本类网站输入日程安排和隐私信息

场景三:第三方网站交互

第三方跨域提交,攻击者读

  • 第三方站敏感信息读取

攻击者写,第三方跨域使用

  • 比如第三方站点www.mepsite.com跨域从www.website.com获取信息,可能导致xss攻击<script src=”http://www.website.com/api.php?jsonp=XXXXX”></script>
  • 通过Oauth授权绑定第三方账号的场景,可能导致受害者绑定了攻击者的第三方账号

 

Oauth授权绑定第三方账号

1、某站绑定某微博网站登陆的请求为http://www.website.com/oauth/redirect/bind/weibo?next=/oauth/callback此请求并未做csrf防护,攻击者可以在第三方网页中伪造此请求

2、某微博的授权有如下特点,如果当前登陆的微博曾经授权过此应用,那么就会无需用户确认,会自动完成授权过程,网站会自动绑定此微博账号

3、所以我们可以找一个此微博站登陆的csrf漏洞,诱导受害者自动登陆攻击者的微博。然后再让用户访问绑定请求,这样就完成了对攻击者微博的绑定。这样攻击者使用他的微博登陆就可以进入受害者的网站账号http://www.website.com/oauth/bindweibo?platform=weibo&state=XXXXXXX&code=XXXXXXXXXXXX

一些实用的小技巧

1、有些授权页要求强行登录,可以尝试修改参数为forcelogin=false

2、有的callback请求没有校验state。可以直接使用下面链接完成绑定https://api.mouweibo.com/oauth2/authorizeclient_id=3977697501&redirect_uri=xxxxxxxxx&response_type=code&state=xxxx&forcelogin=false

3、有的state校验是校验cookie的,也可能有setcookie的接口。曾有个站:State存在cookie中,而且存储格式是这样XXXXXX=state,只要能控制value即可

 

登录攻击者的网站账号

场景一:利用对方上网环境

1、对方的员工或者内网的白名单IP或白名单浏览器的突破

2、盗号后对溯源的干扰

3、利用网友的环境恶意发帖

场景:场外的人

攻击者账号的内容被其他人看到,比如对方女友,或者警察。可以诬陷受害人

 

登录关联账号

如果被攻击者恶意绑定,相当于被盗号。

攻击方式:logincsrf

例如

1、一些网站允许用户绑定另外一个站内其他账号,然后可以同时管理两个账号;

2、一些网站允许用户绑定第三方账号,和第三方站可以互相登录;

 

登录浏览器账号

可以窃取隐私、安装恶意插件。

攻击方式:logincsrf、伪造自动登录链接、社工

例如

1、浏览器的云账号,可以同步收藏夹和扩展,或者同步浏览器配置

2、模拟浏览器账号登录界面的请求,在一些特定页中可以实现浏览器的登录

 

app类攻击场景

如果受害者的网盘、备忘录类app登录了攻击者账号,从此手机端信息同步给攻击者,比如照片、日程等等

攻击方式

Webview登录、url schemes接收凭证

 

后台配置类攻击场景

配置数据库账号、ftp账号、memcache等存储服务的账号

攻击方式:csrf

 

登录路由器云账号

攻击者登录app,可以获得隐私信息、劫持DNS…

攻击方式:社工、logincsrf

例如

1、路由器管理界面可以配置云账号。路由器可以通过app来管理

2、攻击者可以获取受害者的上网终端信息,修改受害者的上网配置信息

 

智能家居

可以偷拍、监控出轨….(当然也可以是别的)

攻击方式:社工、漏洞接口

例如

1、摄像头的云账号可以查看实时画面

2、体重秤的云账号可以查看体重记录

 

攻击者账号的内容有selfxss

selfxss的鸡肋:盗取cookie和对自己的资源操作是无意义的

还可以做很多事,例如

1、浏览器端存储的操作(存储xss、污染缓存……)

2、同源策略可以攻击其他域

3、钓鱼偷取密码

4、偷其他域传递过来的信息

selfxss攻击需要对方先登录攻击者账号

 

Selfxss操作浏览器端存储

1、A.website.com的自动登录+A.website.com的selfxss+B. website.com的cookiexss=B. website.com的reflect xss

2、localstorage污染等等

 

selfxss

如果B.weisite.com的document.domain=weisite.com

A.weisite.com同源策略可以攻击B.weisite.com

 

selfxss钓鱼

  • 钓鱼偷取密码
  • 钓鱼进行诈骗

 

selfxss偷其他域传递过来的信息

http://sso.mepsite.com/login.php?appurl=http://A.website.com/selfxss.php

sso.mepsite.com给A.website.com传递了ticket

1、http://A.website.com/selfxsspage.php?ticket=XXXXXXXX

selfxss获取Window.location

2、http://A.website.com/login.php?ticket=XXXXXXXX js跳转到http://A.website.com/selfxsspage.php

selfxss获取referer

3、http://A.website.com/login.php?ticket=XXXXXXXX 302跳转到http://A.website.com/selfxsspage.php

  • selfxss先种超长cookie
  • 再创建iframe,src=http://sso.mepsite.com/login.php?appurl=http://A.website.com/selfxss.php
  • http://A.website.com/login.php?ticket=XXXXXXXX会加载失败,然后使用iframe.contentWindow.location.href读取最后的iframe的当前地址,从而得到ticket

拒绝服务还有个好处,突破某些ticket有防重放的保护

 

修复方案

敲黑板!未知攻焉知防,了解攻击思路,最重要的是提醒大家不要放过任何漏洞,尽量杜绝所有可能出现的安全隐患哇!

1、登录表单、换取凭证、退出登录等请求都需要做csrf防护、来源签名校验等

2、页面醒目显示登录用户名

3、不因善小而不为,不以洞小就不修

 

欢迎对web漏洞挖掘和安全架构方向感兴趣和对如何能做一个优雅的段子手感兴趣的同学们,关注一波!

呆子不开口老师博客 :http://lvwei.me,以及微博 http://weibo.com/lvwei

PPT下载链接:https://pan.baidu.com/s/1iNUr1tB-mP97jw4OKzB9iw

(完)