oauth协议利用点

前言

      看了国外大神的一处反射xss+两处csrf组合利用,觉得有必要看看oauth协议。

利用点

  1. oauth1协议没有对回调参数oauth_callback做限制,导致可以回调到任意网站。那么回调到自己搭建的网站,就可以获得token。
  2. oauth2 redirect_url也有可以校验不严回调到任意网站。有些网站后台直接固定redirect_url.
  3. 没有使用state参数,可以会造成CSRF.
  4. 服务端拿到code, 带着code请求第三方API返回token, 用token + appid就可以从授权方获取用户数据。所以code被劫持替换之后,获取的是其它第三方帐户信息,验证不当可能会造成任意用户绑定或登录。qq的api是用一个openid验证,一个openid对应一个用户。

    yzmcms的代码片断

    1
    2
    3
    4
    5
    6
    7
    8
    9
    if ($token) {                                                                                                                                  
    $url="https://graph.qq.com/oauth2.0/me?access_token=$token";
    $content=file_get_contents($url);
    $content=str_replace('callback( ','',$content);
    $content=str_replace(' );','',$content);
    $returns = json_decode($content);
    $openid = $returns->openid;
    $this->openid = $openid;
    }
  5. 所以应用方与第三方都有可能产生配置不当的漏洞。

总结

      严格遵守oauth协议规范。

念念不忘,必有回响。