WakaTime OAuth双重点击劫持攻击
漏洞概述
攻击者可以通过双重点击劫持攻击诱骗用户在WakaTime应用同意对话框中无意点击"连接我的WakaTime账户"按钮。这使得攻击者能够注册WakaTime OAuth应用,托管钓鱼页面,并让受害者意外点击授权按钮。
攻击流程
- 攻击者创建初始网页,包含打开新窗口的按钮
- 当前标签页重定向至WakaTime OAuth授权URL
- 同时打开新标签页指向攻击者控制的页面
- “双击"按钮与"连接我的WakaTime账户"按钮对齐
- 第一次点击关闭攻击页面标签,第二次点击实际授权按钮
- 重定向至攻击者控制的URL并获取授权码
- 攻击者将授权码交换为访问令牌
复现步骤
- 从附件下载源代码:250805_wakatime_double_clickjacking.zip
- 在https://wakatime.com/apps/new创建新的WakaTime应用
- 在index.html中修改client ID和redirect_uri
- 使用python main.py运行flask应用
- 模拟受害者账户进行攻击测试
技术细节
- 受害者需要已登录WakaTime
- 按钮对齐可能需要调整attack.html中的位置参数
- 测试环境:Firefox Browser 140.0.2 (64-bit), Windows
修复建议
通过默认禁用关键按钮来消除双重点击劫持风险,除非检测到用户手势(如移动鼠标或使用键盘)。
影响范围
攻击者可诱骗已登录的WakaTime用户无意中授权攻击者创建的第三方应用,根据权限范围获取WakaTime API资源访问权限。
参考资料
- https://jorianwoltjer.com/blog/p/hacking/pressing-buttons-with-popups
- https://www.evil.blog/2024/12/doubleclickjacking-what.html
- https://www.evil.blog/2024/02/cross-window-forgery-web-attack-vector.html
漏洞状态: 已修复 严重程度: 中等(4-6.9) 弱点类型: 安全设计原则违反