网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

利用OAuth劫持用户身份 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-15 15:00 作者: 阅读:

[导读] 本文基于@蓝色di雪球在2014年8月22日的KCon上的演讲《利用OAuth劫持用户身份》整理而成。演讲者简介@蓝色di雪球,新浪微博安全团队安全工程师。主要从事微博产品的安全测试,安全功能...

本文基于@蓝色di雪球在2014年8月22日的KCon上的演讲《利用OAuth劫持用户身份》整理而成。

演讲者简介

@蓝色di雪球,新浪微博安全团队安全工程师。主要从事微博产品的安全测试,安全功能架构,以及相关自动化平台工具架构和研发工作。致力于研究应用安全,安全自动化以及安全运维等。

OAuth是什么

OAuth是一个开源授权协议,通过授权,第三方应用可以在不使用用户名密码的情况下,访问用户在某一个网站上的私密数据。目前微博、淘宝、微信、Twitter、Facebook等用户基数比较大的公司都在使用OAuth,从谷歌的搜索结果也可以看到OAuth的发展很快,使用的人非常多。OAuth分为OAuth 1.0和OAuth 2.0,OAuth 2.0简单清晰,是1.0的升级版,但是不兼容1.0,目前大多数网站也都是使用的OAuth 2.0。

OAuth的四种调用方式

  1. Authorization Code
    最常用的,相对安全,需要有Server端支持。
    \
  2. Implicit
    直接获取access_token,不需要Server端支持。
    \
  3. Resource Owner Password Credentrals
    第三方可以获得用户名和密码,需要第三方绝对可信。
  4. Client Credentials
    不需要用户授权,授权通过服务器进行。

请求参数

在了解OAuth的漏洞之前,首先需要了解常用的OAuth调用方式的请求参数。

  1. Authorization Code
    • https(加密传输)
    • response_type=code(控制调用)
    • redirect_uri(回掉地址)
    • scope(控制权限)
  2. Implicit
    • display(场景控制)
    • response_type=token(控制调用)
    • referer(请求来源)
    • 没有redirect_uri

OAuth风险分析

风险分析

  • 信息泄漏
    主要包括Authorization Code泄漏、Access Token泄漏、AppSecret泄漏。
  • CSRF
    主要包括授权劫持和绑定劫持。授权劫持是指用户在目标网站处于登录状态的情况下,攻击者通过伪造授权链接来诱骗用户点击,用户访问攻击者的链接后,攻击者就会劫持用户授权。绑定授权同样是在用户处于登录状态的情况下,攻击者通过用户授权登录目标网站并阻断用户授权流程,进而诱骗用户点击,用户在访问攻击者的链接后,攻击者就可以劫持用户授权。
  • URL回调污染
    主要是指由于redirect_uri回调地址填写不严格或者授权服务器不验证或者验证不严格而导致的code或者access_token泄露。

  • 权限认证
    主要是指OAuth高级授权接口的越权访问,比如GitHub的scope漏洞,导致可以访问私有代码区。

  • 不区分调用方式
    主要是指在Authorization Code和Implicit两个调用方式,它们的区别仅仅是一个参数,黑客可以利用这个参数来绕过AppSecret认证。
  1. 劫持用户应用方身份
    这种方式需要用户绑定第三方应用和网站进行授权绑定,黑客修改回调地址后,紧接着用户就会跳转到接受code的网址,黑客获得code后就可以登录与网站绑定的第三方账号。具体的攻击过程是这样的:1)用户授权将网站与第三方应用绑定 2)用户已经登录网站 3)黑客构造OAuth回调污染地址 4)通过私信等其它途径诱惑用户点击URL 5)利用Authorization Code劫持用户第三方应用的身份

  2. 劫持用户授权方身份
    黑客利用OAuth中的URL跳转漏洞,XSS漏洞后拿到accesss_token。通过access_token,黑客可以劫持大V用户发微博、劫持大量用户发评论、删除指定微博、刷粉、强制关注等。

OAuth漏洞修复

微博中存在的问题:

  • 开放平台中 redirect_uri 不规范
  • redirect_uri 校验存在逻辑错误
  • 不区分调用方式

最终的修复方案:

  • 将大型应用添加进白名单,严格验证开放平台回调地址
  • 非白名单进行全路径验证
  • 运营和产品推动,规范白名单内应用的回调地址,改完移出白名单,直到白名单清空

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论