从二维码应用安全风险到新奇刷洞思路
字数 1348 2025-08-24 07:48:23
二维码应用安全风险与OAuth认证流程缺陷挖掘指南
一、二维码应用概述
二维码已成为日常生活中不可或缺的信息载体,其本质是一种编码方式,与Base64编码类似。关键点在于扫码后获取的信息如何被处理,处理不当则会产生安全风险。
二维码解码后的三种处理方式
- 网站跳转:以
http://或https://开头的网址会用内置浏览器打开 - 内容解析处理:符合特定语法的语句会被特别处理
- 纯文本传递:其余内容以纯文本形式展示(微信中不允许出现中文)
二、二维码安全风险分析
1. 纯文本传输风险
- 风险较低,主要可能存在于:
- 假的纯文本传输:某些条件下HTML标签仍可能被解析
2. 内容解析处理风险
风险完全取决于扫码端的处理逻辑,可能存在的漏洞包括:
- SQL注入(如果内容存入数据库)
- SSRF(如果访问内网资源)
- 任意用户身份伪造(如果根据特定值分配身份)
3. 网站跳转风险
通过二维码跳转网址可能暴露以下安全问题:
- 接口遍历:如添加好友、分享名片、获取优惠券等接口
- XSS:动态传参渲染HTML时可能存在的跨站脚本
- URL重定向:二维码内容可控即相当于存在URL重定向漏洞
- 敏感信息泄露:链接参数中可能包含密钥、管理员账号等
- CSRF:可能导致扫码后账号被盗或资金转移
- OAuth换绑:本质是CSRF,捕获回调链接可导致账号被盗
- OAuth认证流程缺陷:重点漏洞,下文详述
三、OAuth认证流程缺陷挖掘
漏洞原理
一句话描述:平台在使用OAuth认证时如果没有二级校验就存在OAuth认证流程缺陷。
典型场景
- 平台使用微信公众号扫码登录
- 用户首次登录需关注公众号
- 已关注用户再次扫码时直接登录,无二次确认
攻击方式
- 攻击者获取平台登录二维码
- 对二维码进行美化包装(如添加诱人文字)
- 已关注公众号的受害者扫描二维码后,攻击者立即获得账户权限
漏洞危害
- 无需抓包,仅需扫码即可判断是否存在缺陷
- 可导致大规模钓鱼攻击
- 攻击者可完全控制受害者账户
- 多家SRC平台定级为中危漏洞
漏洞复现步骤
- 访问平台微信登录页面(如
https://domain/login?platform=wechat&loginType=sms) - 保存生成的微信二维码
- 使用二维码美化网站对二维码进行包装
- 已关注公众号的用户扫描后,攻击者即可获取其平台权限
修复建议
- 在微信公众号端进行二级校验(非网页端,避免模拟绕过)
- 申请获取用户额外信息作为二级校验
- 使用完整的OAuth认证流程
- 在敏感操作处添加二级校验
四、实战经验与SRC提交
提交技巧
- 多家SRC平台认可此漏洞(AntSRC、网易SRC定级为中危)
- TSRC前期可能定中危,后期可能降低(不推荐提交)
- 已有学员利用此漏洞进入某SRC总榜前12名
漏洞报告要点
- 明确描述漏洞原理:缺少二级校验的OAuth认证
- 强调危害:钓鱼攻击可导致账户完全被控
- 提供完整复现步骤
- 建议合理的修复方案
五、防御意识提升
- 警惕陌生二维码,即使来自官方域名
- 开发者应避免仅依赖扫码作为唯一认证方式
- 用户应注意扫码后的授权提示
- 安全团队应定期检查认证流程
通过深入理解二维码处理机制和OAuth认证流程,安全研究人员可以有效挖掘此类漏洞,同时帮助平台提升安全性。