没有state参数导致的csrf,被别人绑定账号

我们知道oauth授权的大致流程是这样的

提供一个登录按钮 url大致是这样的

https://api.weibo.com/oauth2/authorize?【client_id】=【2857799177】&【redirect_uri】=【https://sae.sina.com.cn/ssl/?m=sso&a=weibo_callback&sccb=http%3A%2F%2Fsae.sina.com.cn%2F%3Fm%3Duser%26a%3Dreg_check_login】&【response_type】=【code】&【forcelogin】=【true】

这里对url立面的参数和值使用【】区分了。其中重要的部分是client_id和redirect_uri,如果用户同意授权并登录之后,后台会记录client_id,生成一个code,然后重定向到那个redirect_uri,然后携带code,比如http://sae.sina.com/?【code】=【fldjs8943fasoh】

这样第三方应用就获取到了code,然后根据事先注册的client_id和app_secret就能去获取access_token之类的信息了。然后凭借access_token去访问用户信息。

但是我们想如果两个人交换了这个code,那样不就会绑定了对方的账号么?因为这个code或者这个带有code的url只能携带提供oauth服务的网站的账号,比如微博账号,然后绑定在第三方(比如论坛)上,只要是没有论坛账号没有绑定微博账号的人,访问带有这个code的url,都会将这个微博账号绑定在论坛账号上。

怎么防范呢,其实在oauth官方文档中有说明,就是再加入一个随机参数,比如state=3428oiresuihf,服务器访问回调url的时候也会带着这个参数,比如http://sae.sina.com/?code=fdsfjkldsfjdlks&state=fdsafjdsklw9 第三方应用需要自行去设置和对比这个参数,比如在session中存储等等。

但是要强调的是:不是必须加入state参数,而是必须用csrf保护。参考http://drops.wooyun.org/papers/598中间部分。

redirect_uri校验不严格

这样就网站可能就会将code重定向到攻击者的网址上,然后我们使用这个code填到真实的redirect uri上就能绑定账号了。

主要问题就是url没有校验,url校验不严,可绕过,url跳转漏洞等等。参考

http://blog.knownsec.com/2014/05/oauth_vulnerability_analysis/

错误的参数传递

比如用户同意授权之后重定向的时候会携带uid,然后将账号绑定在这个uid上,却没有校验uid。

参考http://www.wooyun.org/bugs/wooyun-2012-011104

http://www.wooyun.org/bugs/wooyun-2013-017543

------------------------

参考 http://www.freebuf.com/articles/web/5997.html

http://tech.ccidnet.com/art/32963/20121109/4448657_1.html

http://drops.wooyun.org/papers/1989(这个里面还有oauth常见的其他被错误使用导致的漏洞,可以好好看看)

转载于:https://www.cnblogs.com/virusdefender/p/3753433.html

oauth认证中容易被错误使用而导致的漏洞相关推荐

  1. 新浪微博OAuth认证总结

    自从最近Twitter只支持OAuth认证方式以来,各大应用都纷纷转向OAuth认证方式,而新浪微博的开放平台也将在近日停止Base OAuth的认证方式. 为了能够继续使用新浪微博的开放平台,开始研 ...

  2. php hmacsha1加密,PHP版OAuth认证协议中的HMACSHA1加密算法(签名方法)

    鼓捣微博API的时候接触到OAuth认证协议,其中的HMACSHA1加密算法(签名方法)百度上找的,分享出来,也许以后有用.呵呵.... function hmacsha1($key,$data) { ...

  3. 腾讯微博Android客户端开发——OAuth认证介绍

    腾讯微博是一个由腾讯推出,提供微型博客服务的类Twitter网站.在腾讯官方 的软件或网站中发布微博我们需要输入QQ号和密码,同样如果我们自己开发客户端给用户使用,我们也需要用户提供QQ号和密码,这就 ...

  4. 新浪微博Android客户端开发之OAuth认证篇

    新浪微博客户端开发之OAuth认证篇 2013年7月29日新浪微博客户端开发 OAuth2.0授权机制我在这里就不浪费口舌了,有很多大牛都发表过相关的文章解释OAuth2.0认证的流程,我就随便找了一 ...

  5. 新浪微博客户端开发之OAuth认证篇

    新浪微博客户端开发之OAuth认证篇 2013年7月29日新浪微博客户端开发 OAuth2.0授权机制我在这里就不浪费口舌了,有很多大牛都发表过相关的文章解释OAuth2.0认证的流程,我就随便找了一 ...

  6. 新浪微博OAuth认证和存储

    先建立一张数据库来保存用户信息,下面是一个基本的 Mysql 的例子: 1 2 3 4 5 6 7 8 9 CREATE TABLE `oauth_users` (   `id` INT(10) UN ...

  7. OAuth认证与授权

    什么是OAuth授权? 一.什么是OAuth协议 OAuth(开放授权)是一个开放标准. 允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息. 而这种授权无需将用户提供用户名和密码提 ...

  8. 如何在WP-Config中设置WordPress错误日志

    https://baijiahao.baidu.com/s?id=1622279671500148245&wfr=spider&for=pc 你想在wp-config文件中设置Word ...

  9. OAuth认证原理及HTTP下的密码安全传输

    很多人都会问这样一个问题,我们在登录的时候,密码会不会泄露?随便进一个网站,登录时抓包分析,可以看到自己的密码都是明文传输的,在如此复杂的web环境下,我们没有百分的把握保证信息在传输过程中不被截获, ...

最新文章

  1. Cocos Creator—最佳构建部署实践
  2. 40亿次仿真学习:人工智能5:0大胜人类飞行员
  3. 关于DELLR710/R910(rhel5.3-5.5) Broadcom netxtreme 5709网卡间歇性的停止接收数据包的问题解决方案...
  4. linux网络编程一:主机字节序与网络字节序的的判断
  5. ExtJS入门之一 类与继承
  6. android volatile的使用
  7. jQuery基本语法
  8. django mysql settings
  9. GBK转unicode码查询表
  10. useState用法指南
  11. webstorm主题网址
  12. react customize-cra 配置less modules
  13. 使用硕正插件在strtus2框架下返回数据问题
  14. Windows10怎么卸载删除微软拼音输入法
  15. 软件测试工程师转正申请自我鉴定,it人员转正自我鉴定范文
  16. 罗斯蒙特248HANAU2NS温度变送器
  17. 应用覆盖安装后桌面图标消失问题
  18. 【KALI使用】17 主动信息收集——四层发现(TCP、UDP、使用 scapy 定刢数据包迕行高级扫描)
  19. html里top是向下,css left right top bottom定位
  20. 【深入理解计算机操作系统】01_计算机系统漫游

热门文章

  1. 2021-06-23Leetcode264.丑数
  2. Real-time human pose recognition in parts from single depth images 中文翻译【译】【中译】微软kinect中用的算法
  3. 计算机网络成绩分析单,网上阅卷系统考试成绩分析
  4. 派代(Paidai.com)邀请码
  5. Windows10 打开SQL Server 配置管理器的方法
  6. VMLite 安装linux系统,虚拟机linux安装vmtools
  7. 在线求F4V格式播放器代码
  8. python界面编程-Python的GUI编程(TK)
  9. 百度大脑度目系列硬件常见问题汇总
  10. C++上机练习:关门人和开门人