主页 > 网络知识 > QQ二维码登陆机制分析+双重SSRF钓鱼利用

QQ二维码登陆机制分析+双重SSRF钓鱼利用

前言1:上次发了QQ邮箱self-xss的综合利用链,因为之前提交了TSRC,看了已经修复才把漏洞细节发出来的,然后被扣了安全币和积分。由于没认真看条款在这先道个歉。

前言2:随着移动应用的普及,二维码在我们的日常生活中显得越来越重要。其中二维码有一个功能用于移动端和PC端的交互认证。随着新事物的出现,新的漏洞也有可能随之出现。要想挖到新漏洞就得先弄清他的原理。

一、抓包分析

既然二维码认证是基于网络流量的认证首选当然是抓包啦。

环境:Chrome+BURP

网址:https://mail.qq.com(QQ邮箱)

1.1.打开网址,点击扫码快捷登录

 

QQ二维码登陆机制分析+双重SSRF钓鱼利用

这样你会抓到一个生成二维码的请求,并得到一个二维码和一个qrsig的cookie,qrsig这个值非常重要,后面会用到。

 

 

QQ二维码登陆机制分析+双重SSRF钓鱼利用

1.2.接着你就会发现,客户端一直在向服务器发送一个请求包,返回包为二维码未失效(一开始以为是验证二维码的时效性,后面发现不仅仅如此)

QQ二维码登陆机制分析+双重SSRF钓鱼利用

1.3.既然有未失效,我索性等了几分钟,看二维码失效是怎么样的

 

 

QQ二维码登陆机制分析+双重SSRF钓鱼利用

 

1.4.点击刷新后,发现这个操作又触发了1.1获取新的二维码和qrsig值

1.5.接着我们流程就重复了,现在我们分析下1.2一直重复包的结构

不停测试去掉无关紧要值如下

GET/ptqrlogin?u1=https%3A%2F%2Fmail.qq.com%2Fcgi-bin%2Freadtemplate%3Fcheck%3Dfalse%26t%3Dloginpage_new_jump%26vt%3Dpassport%26vm%3Dwpt%26ft%3Dloginpage%26target%3D&ptqrtoken=650520951&from_ui=1&action=3-13-1576220049044&aid=522005705& HTTP/1.1 Host: ssl.ptlogin2.qq.com Connection: close User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Accept: */* Sec-Fetch-Site: same-site Sec-Fetch-Mode: no-cors Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: qrsig=jJI71X4ePycn70DE485AKclRQL2toySex06uRmVtyr31ra3xTakttA-z3FInBb0I

我们一个一个变量来分析:

u1=要授权的网站(这里是QQ邮箱)

from_ui=1 固定值

ptqrtoken=token 跟cookie的qrsig值对应

action=时间窜

aid= 这个没看懂是啥(但是这个值貌似不重要)

cookie:qrsig(关键值,与ptqrtoken存在对应关系,因为改任意一个值都会报错)

综上所述可以看出:qrsigptqrtoken是关键值

服务器就给了我们一个qrsig值,却没有给我们ptqrtoken,所以猜测是通过已缓存的JS算出来的,在资源项中搜索ptqrtoken

 

QQ二维码登陆机制分析+双重SSRF钓鱼利用

 

果然搜索到了,下载js本地分析:

https://cdn-go.cn/qq-web/any.ptlogin2.qq.com/c7d607f7//ptlogin/ver/19112817/js/c_login_2.js

发现ptqrtoken由qrsig经过hash33生成而成,在js中搜索hash33函数。

function a(t){ for(var e=0,i=0,n=t.length; i<n;++i)e+=(e<<5)+t.charCodeAt(i); return 2147483647&e}

通过之前抓取的值本地调试一波,并验证

QQ二维码登陆机制分析+双重SSRF钓鱼利用

 

对比抓包数据,是可以验证成功的。

1.6.既然已经对所有关键值已经有所了解了,接着继续往下走,刷二维码进行认证。

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!