WakaTime OAuth双重点击劫持攻击漏洞分析

本文详细分析了WakaTime OAuth授权流程中的双重点击劫持攻击漏洞,攻击者可通过精心构造的钓鱼页面诱骗用户授权,获取访问令牌并代表用户执行操作,文章包含攻击流程、复现步骤和修复建议。

WakaTime OAuth双重点击劫持攻击

漏洞概述

攻击者可以通过双重点击劫持攻击诱骗用户在WakaTime应用同意对话框中无意点击"连接我的WakaTime账户"按钮。这使得攻击者能够注册WakaTime OAuth应用,托管钓鱼页面,并让受害者意外点击授权按钮。

攻击流程

  1. 攻击者创建初始网页,包含打开新窗口的按钮
  2. 当前标签页重定向至WakaTime OAuth授权URL
  3. 同时打开新标签页指向攻击者控制的页面
  4. “双击"按钮与"连接我的WakaTime账户"按钮对齐
  5. 第一次点击关闭攻击页面标签,第二次点击实际授权按钮
  6. 重定向至攻击者控制的URL并获取授权码
  7. 攻击者将授权码交换为访问令牌

复现步骤

  1. 从附件下载源代码:250805_wakatime_double_clickjacking.zip
  2. 在https://wakatime.com/apps/new创建新的WakaTime应用
  3. 在index.html中修改client ID和redirect_uri
  4. 使用python main.py运行flask应用
  5. 模拟受害者账户进行攻击测试

技术细节

  • 受害者需要已登录WakaTime
  • 按钮对齐可能需要调整attack.html中的位置参数
  • 测试环境:Firefox Browser 140.0.2 (64-bit), Windows

修复建议

通过默认禁用关键按钮来消除双重点击劫持风险,除非检测到用户手势(如移动鼠标或使用键盘)。

影响范围

攻击者可诱骗已登录的WakaTime用户无意中授权攻击者创建的第三方应用,根据权限范围获取WakaTime API资源访问权限。

参考资料

漏洞状态: 已修复 严重程度: 中等(4-6.9) 弱点类型: 安全设计原则违反

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计