1. 首页
  2. 渗透编程

QQ二维码认证机制(舔狗认证)+二维码认证漏洞

前言:二维码登录都有这个缺陷,我19年就提SRC被忽略了,这次把两篇文章二合一整理一下再次发出来。

QQ二维码认证机制(舔狗认证)+二维码认证漏洞

QQ二维码认证机制(舔狗认证)+二维码认证漏洞

 

QQ二维码认证机制(舔狗认证)

前言:前两天看见两个小伙伴写了二维码钓鱼,但是均表达的有点小乱加上图片的失真问题。这里我重新再写一遍。分为二维码的认证机制+二维码钓鱼两篇。

 

1.抓包分析

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

环境:Chrome+BURP

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

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

QQ二维码认证机制(舔狗认证)+二维码认证漏洞

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

QQ二维码认证机制(舔狗认证)+二维码认证漏洞

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

QQ二维码认证机制(舔狗认证)+二维码认证漏洞

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

QQ二维码认证机制(舔狗认证)+二维码认证漏洞

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二维码认证机制(舔狗认证)+二维码认证漏洞

果然搜索到了,下载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函数。

QQ二维码认证机制(舔狗认证)+二维码认证漏洞

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二维码认证机制(舔狗认证)+二维码认证漏洞

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

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

QQ二维码认证机制(舔狗认证)+二维码认证漏洞可以从图中看出这三个包分别返回值为认证中,未失效,以及登录成功。但是他们的请求包竟然一模一样。这样就可以推测出客户端一直向服务端以一定频率发送的请求的功能是判断二维码的状态,认证成功/认证状态/二维码是否失效。这样一个完整的认证过程就结束了。

 

2.流程分析

  1. 获取二维码以及qrsig值

  2. 客户端根据qrsig值算出ptqrtoken值

  3. 客户端一直向服务器发送包含qrsig和ptqrtoken的包(服务器返回二维码状态)

  4. 当有人扫描二维码并确认

  5. 服务端在确认后的下一个3步请求返回认证成功的内容

当时间过长二维码失 效回滚第一步,当扫描后未确认,回滚到第二步。

3.舔狗模式

为了更生动形象便于理解,以舔狗来举例。

舔狗向女神要联系方式(qrsig),女神给了。

舔狗日常舔女神,以一定频率的间隔向女神表白(步骤3),女神回复:不讨厌(二维码未失效)。

因为舔狗天天表白,一定时间后女神烦了,回复滚(二维码失效),舔狗必须付出一定代价(刷新)才能继续舔女神。

当一天舔狗突然暴富去找女神(扫描二维码),并同意把钱全部给女神(并点击确认)。舔狗在下一次表白的时候就成功了(步骤3)


 

 

 

文章2双重ssrf+QQ二维码钓鱼(杀猪盘攻击)

 

 


前言:昨天我们讲了QQ二维码的登陆机制,今天我们就来讲一讲如何利用这种机制进行钓鱼攻击。传送门:QQ二维码认证机制

1.我们回顾下上篇文章的认证过程及钓鱼原理

获取二维码图片和cookie值

一直向服务器发送请求包来确认二维码状态

扫描二维码并确认

在下一次请求二维码状态的时候,返回认证成功后页面

从这个过程中我们可以看到二维码认证的机制存在问题

  1. 任何人都可以请求一个二维码

  2. 二维码适用于任何一个ID

  3. 请求二维码方和认证二维码方可以不是同一个会话

这样我们就可以通过以上三点,实施钓鱼攻击,也就是黑客请求一个二维码,然后根据返回的cookie一直向服务器请求认证状态。接着把二维码发送给受害者,根据具体情况选择不同的攻击方案。如:

1.即时聊天工具的一次性二维码钓鱼攻击

2.钓鱼页面的实时刷新的二维码钓鱼攻击

简单画下原理图

QQ二维码认证机制(舔狗认证)+二维码认证漏洞

这样实现并不困难,具体步骤就按着流程图自己去做吧,今天我们要讲的是配合ssrf漏洞的二维码钓鱼。

2.ssrf+二维码钓鱼

上图可以看出要实现完美的钓鱼,还缺一个如何完美诱骗受害者扫描二维码。是否能配合其他漏洞使钓鱼更加完美呢?这时我就想到了ssrf漏洞。原理图如下

QQ二维码认证机制(舔狗认证)+二维码认证漏洞

如上图可以看到用户首先访问了存在SSRF漏洞的正规网站,正规网站指向黑客服务器,黑客服务器指向QQ认证服务器,可以简单理解为双重ssrf的利用。

3.生动举例(杀猪盘攻击)

上一篇文章举例了舔狗攻击,这篇文章我就以杀猪盘为例吧。

  1. 渣男发现一个漏洞,可以通过可信度比较高的人士宣称自己是成功人士(ssrf)

  2. 渣男批量把这个消息发送给妹子们(上图步骤1)

  3. 因为这个消息来自可信度比较高的人,妹子们选择相信(步骤2)

  4. 渣男向银行申请取款(步骤4),银行返回给渣男一个有失效限制的二维码需要妹子们确认(步骤5)

  5. 渣男们通过甜言蜜语诱骗妹子们扫描二维码(即妹子扫描二维码并确认,上图未画)

  6. 渣男不知道妹子们有没有扫码并确认,就一直问银行,妹子认证了没?

  7. 妹子认证成功,银行在渣男下一次询问中,把钱给渣男。

.゚ヽ(。◕‿◕。)ノ゚.:。+゚防盗专用。:.゚ヽ(。◕‿◕。)ノ゚.:。+゚

 ^_^文章来源:微信公众号(边界骇客) ^_^ ^_^

原创文章,作者:moonsec,如若转载,请注明出处:https://www.moonsec.com/6149.html

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息