IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Burpsuite靶场之OAuth2.0漏洞及利用初探 -> 正文阅读

[网络协议]Burpsuite靶场之OAuth2.0漏洞及利用初探

一、OAuth2.0介绍

OAuth 是一种常用的授权框架,它使网站和 Web 应用程序能够请求对另一个应用程序上的用户帐户进行有限访问。

1.1 两种类型

OAuth2.0框架有两种授权类型:分别是授权码授权和隐式授权

1、授权码授权客户端应用程序向OAuth服务请求数据时询问用户是否同意该请求的访问,当用户接受后,客户端会收到OAuth服务发来的授权code;而后客户端应用程序与OAuth服务之间交换此code来接受“访问令牌”,在获取相关用户数据的时候就使用“访问令牌”进行。
在这里插入图片描述
2、隐式授权比授权码授权简单,客户端应用程序不需要通过授权code去交换“访问令牌”,是在用户同意后立即接受“访问令牌”,安全性比授权码授权类型差。
在这里插入图片描述

1.2 三个角色

这里的3个角色指的就是上述图中所展现出来的3个通信角色

1、客户端应用程序:想要访问用户数据的网站或Web应用程序
2、资源所有者:客户端应用程序想要访问其数据的用户(注意是用户)
3、OAuth服务提供商:控制用户数据及其访问权限的网站或应用程序。它们通过提供用于与授权服务器和自愿服务器交互的API来支持OAuth

1.3 四个阶段

阶段1:客户端应用程序请求访问用户数据的子集,指定他们想要使用哪种授权类型以及他们想要什么样的访问权限。
阶段2:系统会提示用户登录 OAuth 服务并明确同意所请求的访问。
阶段3:客户端应用程序会收到一个唯一的访问令牌,以证明他们有权从用户那里访问所请求的数据。 这究竟是如何发生的,取决于资助类型。
阶段4:客户端应用程序使用此访问令牌进行 API 调用,以从资源服务器获取相关数据。

二、Lab-1(Authentication bypass via OAuth implicit flow)

2.1 产生原理

	隐式授权通过浏览器发送访问令牌,访问令牌作为 URL 片段从 OAuth 服务通过用户浏览器发送到客户端应用程序。 然后客户端应用程序使用 JavaScript 访问令牌。 麻烦的是,如果应用程序想要在用户关闭页面后保持会话,它需要将当前用户数据(通常是用户 ID 和访问令牌)存储在某处。
	如果在客户端没有对访问令牌与请求中其他数据匹配,则可导致修改服务器可能判断的键值而访问到其他人的资源

2.2 利用过程

先准备好环境(burpsuite抓包+靶场页面)在这里插入图片描述
进行登录并实时查看HTTP history(开启抓包)
在这里插入图片描述
在history中看到OAuth服务返回的数据包中存在邮箱这一关键键值(可唯一标识该用户)
在这里插入图片描述
再看紧接着的下一个数据包,客户端将接收到的用户信息作为post数据发送给OAuth服务以请求资源
在这里插入图片描述
根据任务提示这里修改数据包的email值为carlos@carlos-montoya.net,可请求到carlos用户的资源
在这里插入图片描述

2.3 加固修复

此情况很难单方面在客户端进行修复

三、Lab-2(Forced OAuth profile linking)

2.1 产生原理

客户端在发送认证请求时候没用加入state属性而导致不确定返回包是否是同一个人发出,如果存在state属性,服务器会将state属性及值不变地返回给客户端进行验证

2.2 利用过程

开启代理并登陆
在这里插入图片描述
附加社交资料
在这里插入图片描述
查看HTTP history看到 有个请求认证的数据包中缺少state属性,那考试这里是否存在类似于csrf的攻击呢?(state属性作用请看前面部分)
在这里插入图片描述
再次点击附加社交资料并抓包复制其URL后将该请求包Drop掉在这里插入图片描述

退出博客后进入漏洞利用服务器
在这里插入图片描述
这里使用iframe标签,当攻击者访问时自动请求标签src指向的url地址,确定无误后依次点击store 和 Deliver exploit to victim
在这里插入图片描述
重新尝试登陆,注意这里选择使用社交媒体登陆
在这里插入图片描述
已经成为admin权限了,完成通关只需进入Admin panel删除carlos
在这里插入图片描述
PS:这个过程我做第二次查看数据包才清楚,简单解释一下:当点击附加社交资料时,客户端向服务器发送了一次认证(缺少state值但这里不重要),请求到了一个oauth-linking?code=xxxxx的资源链接,这个code应该是在服务端已经标识了我的用户名或客户端,所以当我把这个链接发送给受害者时,受害者就将自己的社交资料绑定给了我,进而我获取到了admin权限;重要的是根据安全性要求,客户端应该在每次与OAuth服务进行通信时都带上state参数,该参数作为客户端应用程序和OAuth服务之间来回传递的CSRF TOKEN,以增强安全通信
在这里插入图片描述

2.3 加固修复

在与OAuth服务进行通信时url带上一个不可被猜测到的值的state属性

四、Lab-3(OAuth account hijacking via redirect_uri)

这一关比较有意思和经典

2.1 产生原理

OAuth服务端收到redirect_uri后未对其进行校验,进而攻击者可将uri改为自己的站点后发送给受害者访问,导致返回的code发送到了攻击者的站点,使其获取到了受害者资源标识

2.2 利用过程

上才艺:burpsuite+浏览器抓包,先使用wiener:peter进行登录后注销(根据实验室步骤)
再次点击我的账户并开启Burpsuite拦截,当出现这个数据包的时候我们可以对redirect_uri进行测试
在这里插入图片描述
放入Repeater,直接Go,正常返回code是意料之中
在这里插入图片描述
此时修改uri看任然返回code,说明OAuth服务并没有对返回uri进行白名单限制
在这里插入图片描述
下面将该请求包Drop后到漏洞利用服务器构造POC发送给受害者(admin)
在这里插入图片描述
然后查看访问日志看刚才那个漏洞是否利用生效,日志中看到成功获取到受害者code
在这里插入图片描述
下面重复刚才登陆时的抓包动作,在这个地方替换code后放包就可以登陆到admin账户了(如果不行多试几次)
在这里插入图片描述

2.3 加固修复

在OAuth服务端收到redirect_uri时验证其是否在白名单内
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:28:41  更:2021-11-25 08:31:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:46:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码