当前位置:主页 > SEO优化 >

二维码劫持原理及恶意行为分析

作者: 奕星SEO 分类: SEO优化 发布时间: 2019-10-13 05:54 内容来源:网络整理阅读量:

  之前看过其他的二维码登陆劫持漏洞,有的地方写的不是很详细,花了不少时间去研究二维码的原理,才弄懂漏洞。为了照顾更多入门新手,以本人的理解重新总结一遍,二维码登陆原理不是这里的主题,不过有必要熟悉一下流程。

  3.用户打开手机扫描二维码,此时二维码为“scan”状态,网页向服务器不断向授权服务器轮询授权码;

  4.用户手机看到“确认登陆”按钮,点击此按钮向授权服务器申请授权,允许此二维码授权,二维码为“confirm”状态(如果超时失效,为“timeout”状态);

  5.用户点击“确认登陆”后,网页轮询到授权码,此时带授权码申请凭证,成功登陆网站,进入个人中心。

  这里有个疑问,二维码几十秒就会过期,怎么办?可以自己写个浏览器插件实时提取出请求里面返回的状态参数,二维码会有一定的过期时间,过期会有对应的状态,监控此状态即可,比如状态参数securityId和二维码字符barcode,并更新securityId状态到本地,若timeout则刷新二维码;攻击者从本地将barcode当字符串生成自己的二维码图片放在自己的网站上,js一直轮询本地的securityId状态

  访问此页面时,其实浏览器与服务器之间会建立一个长连接,用于监控二维码状态。

二维码劫持原理及恶意行为分析

  201相当于“scan”状态,手机扫描成功时二维码的状态,手机上点击后监控状态返回如下:

  200相当于“confirm”状态,即用户点击确认返回的状态。并且直接返回凭证window.redirect_uri,此时只要复制此凭证到其它浏览器访问,直接可登陆网页版微信。

  即二维码字符为Qe3ev-uOPg==,当二维码过期,只需更新此字符Qe3ev-uOPg==即可,更新二维码字符接口:

二维码劫持原理及恶意行为分析

  第一种漏洞,用户扫描二维码直接登陆,没有任何提示,大家都知道,一般扫描二维码会有“确认登陆”等提示,如果没有此提示,容易被攻击者钓鱼伪造,诱导用户扫描,比如某APP扫描二维码有红包领取,用户只要扫描则被劫持,导致账号被攻击者登陆。这里用乌云的案例演示。。

  来往登陆二维码扫描时无任何提示,伪装为加好友的二维码,用户以为是加好友的二维码,,其实是登陆的二维码,当用户扫描时,攻击者那边可直接登陆用户账号,目前这种漏洞不多了,扫码时基本上都会有登陆等提示

  这个漏洞刚开始看的时候,以为是CSRF,,因为大佬们把它归类为CSRF类型,但是我看的时候发现与传统的CSRF完全不一样,导致一直以CSRF的思维去研究,被误导了。其实就是票据盗取,构造凭证URL,从而劫持用户的账号。

  登陆确认票据盗取,如果没有任何签名保护,攻击者可以直接点击获取的票据拼接链接进行登陆,其实这里应该是在轮询步骤出现漏洞,用户扫描二维码后,客户端不断轮询请求服务器,而此次只是验证某个令牌等参数来确认用户,只要获取此令牌参数值,则可以冒充用户。

  其中uuid为二维码字符,usename为微信号,uuid值怎么获取,文章前面部分已经讲过,usename改为要劫持用户的微信号,key值是未知的,这里只要知道key的值可通过此链接登陆目标微信号。

  Referer获取key思路:URL跳转、引用站外图片处,把跳转的URL、图片改为攻击者自己网站的URL,只要受害用户点击 构造好的URL,会跳转到攻击者网站,此时在攻击者服务器请求包的Referer里,就会看到key值,当然如果跳转处URL有key才可以,否则就去寻找带有key传递的地方,进行构造,只要能构造出向攻击者服务器发送一个请求即可。


本文链接地址:http://www.seohuizhou.com/seoyouhua/13356.html
上一篇:<<数字红利重构你我生活
下一篇:让数据重构商业:互联网商业模式创新>>