Portswigger Labs — OAuth authentication
字数 1476 2025-08-18 11:36:53

OAuth 认证漏洞利用教学文档

1. OAuth 认证基础

OAuth 是一种开放授权标准,允许用户在不共享密码的情况下授权第三方应用访问其资源。本教学将详细讲解三种 OAuth 认证漏洞的利用方法。

2. 通过 OAuth 隐式流绕过认证

漏洞描述

利用 OAuth 隐式授权流程中的缺陷,通过修改认证请求中的参数来冒充其他用户。

实验目标

登录 Carlos 的账户 (carlos@carlos-montoya.net)

利用步骤:

  1. 使用已知凭证登录 (winner/peter)
  2. 在 Burp Suite 中检查历史流量
  3. 定位到 /authenticate 路径的 POST 请求
  4. 修改请求中的 email 参数为 carlos@carlos-montoya.net
  5. 右键请求选择 "Request in browser in original session"
  6. 成功以 Carlos 身份登录

3. 强制 OAuth 资料链接 (CSRF 攻击)

漏洞描述

利用 CSRF 漏洞将攻击者的社交媒体资料绑定到管理员账户。

实验目标

将攻击者的社交媒体资料绑定到管理员账户,然后访问管理面板删除 Carlos。

利用步骤:

  1. 使用传统用户名/密码登录 (winner/peter)
  2. 点击 "attach a social profile"
  3. 分析流量,定位 /oauth-linking 请求
  4. 再次点击 "attach a social profile" 并拦截请求
  5. 找到 /oauth-linking 请求后复制 URL
  6. 在漏洞利用服务器上创建 iframe,src 属性指向复制的 URL
  7. 发送漏洞利用给受害者
  8. 返回主页并附加社交媒体资料
  9. 现在社交媒体资料已绑定到管理员账户
  10. 访问管理面板删除 Carlos

4. 通过 redirect_uri 劫持 OAuth 账户

漏洞描述

通过控制 OAuth 流程中的 redirect_uri 参数窃取授权码。

实验目标

窃取与管理员用户关联的授权码,使用它访问其账户并删除 Carlos。

利用步骤:

  1. 使用凭证登录 (wiener/peter)
  2. 点击 "LOG OUT"
  3. 再次点击 "my account" 观察直接登录
  4. 在 Burp 中检查流量,找到 /auth?client_id=xxx&redirect_uri=xxx 的 GET 请求
  5. 修改 redirect_uri 参数指向漏洞利用服务器
  6. 确认服务器访问日志中收到请求
  7. 构造攻击使管理员访问修改后的链接
  8. 从访问日志中获取管理员授权码
  9. 使用授权码登录管理员账户
  10. 访问管理面板删除 Carlos

5. 关键安全要点

  1. 隐式流漏洞:确保服务器端验证所有认证参数,特别是用户标识信息
  2. CSRF 防护:OAuth 链接操作应使用 CSRF 令牌保护
  3. redirect_uri 验证:严格验证 redirect_uri 参数,仅允许预注册的 URI
  4. 授权码保护:授权码应有短暂有效期且只能使用一次
  5. 服务器端验证:所有关键操作应在服务器端进行验证

6. 防御措施

  1. 实现完整的 PKCE (Proof Key for Code Exchange) 流程
  2. 使用 state 参数防止 CSRF 攻击
  3. 严格限制 redirect_uri 的白名单
  4. 对敏感操作实施二次认证
  5. 记录和监控异常的 OAuth 授权请求

通过理解和利用这些 OAuth 漏洞,安全研究人员可以更好地评估和加强 OAuth 实现的安全性。

OAuth 认证漏洞利用教学文档 1. OAuth 认证基础 OAuth 是一种开放授权标准,允许用户在不共享密码的情况下授权第三方应用访问其资源。本教学将详细讲解三种 OAuth 认证漏洞的利用方法。 2. 通过 OAuth 隐式流绕过认证 漏洞描述 利用 OAuth 隐式授权流程中的缺陷,通过修改认证请求中的参数来冒充其他用户。 实验目标 登录 Carlos 的账户 (carlos@carlos-montoya.net) 利用步骤: 使用已知凭证登录 (winner/peter) 在 Burp Suite 中检查历史流量 定位到 /authenticate 路径的 POST 请求 修改请求中的 email 参数为 carlos@carlos-montoya.net 右键请求选择 "Request in browser in original session" 成功以 Carlos 身份登录 3. 强制 OAuth 资料链接 (CSRF 攻击) 漏洞描述 利用 CSRF 漏洞将攻击者的社交媒体资料绑定到管理员账户。 实验目标 将攻击者的社交媒体资料绑定到管理员账户,然后访问管理面板删除 Carlos。 利用步骤: 使用传统用户名/密码登录 (winner/peter) 点击 "attach a social profile" 分析流量,定位 /oauth-linking 请求 再次点击 "attach a social profile" 并拦截请求 找到 /oauth-linking 请求后复制 URL 在漏洞利用服务器上创建 iframe,src 属性指向复制的 URL 发送漏洞利用给受害者 返回主页并附加社交媒体资料 现在社交媒体资料已绑定到管理员账户 访问管理面板删除 Carlos 4. 通过 redirect_ uri 劫持 OAuth 账户 漏洞描述 通过控制 OAuth 流程中的 redirect_ uri 参数窃取授权码。 实验目标 窃取与管理员用户关联的授权码,使用它访问其账户并删除 Carlos。 利用步骤: 使用凭证登录 (wiener/peter) 点击 "LOG OUT" 再次点击 "my account" 观察直接登录 在 Burp 中检查流量,找到 /auth?client_id=xxx&redirect_uri=xxx 的 GET 请求 修改 redirect_uri 参数指向漏洞利用服务器 确认服务器访问日志中收到请求 构造攻击使管理员访问修改后的链接 从访问日志中获取管理员授权码 使用授权码登录管理员账户 访问管理面板删除 Carlos 5. 关键安全要点 隐式流漏洞 :确保服务器端验证所有认证参数,特别是用户标识信息 CSRF 防护 :OAuth 链接操作应使用 CSRF 令牌保护 redirect_ uri 验证 :严格验证 redirect_ uri 参数,仅允许预注册的 URI 授权码保护 :授权码应有短暂有效期且只能使用一次 服务器端验证 :所有关键操作应在服务器端进行验证 6. 防御措施 实现完整的 PKCE (Proof Key for Code Exchange) 流程 使用 state 参数防止 CSRF 攻击 严格限制 redirect_ uri 的白名单 对敏感操作实施二次认证 记录和监控异常的 OAuth 授权请求 通过理解和利用这些 OAuth 漏洞,安全研究人员可以更好地评估和加强 OAuth 实现的安全性。