作为一名网安学院的研究生,QQ权限竟然被盗了,起因是源于在手机QQ的空间里面扫了评论区发送的二维码,二维码如下,这个二维码目前应该是扫不的。
事故回顾
1.首先,当我用手机扫描二维码之后,进入了一个授权界面,这个界面与平常的授权界面差不多,但是让我授权之后,发现就直接退出浏览界面,并没有下一步的操作。于是我又重复扫了两次,还是一样的结果。
2.此时,我就在想自己是不是授权了某个不正常的网站,授权页面只是一个跳板,为了获取我的QQ账户信息。
3.两个多小时后,发现有人给我的QQ空间点赞,发现自己的QQ空间发了一个广告,并且在好友的留言板也发送了广告。
4.起初还以为只是获取下我的QQ账户基本信息,没想到竟然连我的QQ空间权限都能拿到,这必须要好好分析一下。
技术分析
1.第一步,当然是直接看看这个二维码里面有啥,于是基于zxing写了一个解码器:
import zxing
reader = zxing.BarCodeReader()
barcode = reader.decode(r'D:\Python\pytorchLearn\QRCode\2.jpg')
print(barcode)
二维码界面之后如下:
BarCode(raw='http://txz.qq.com/p?k=RvavEHqTh9Bx657kM*iNDFnJ8z9N5itN', parsed='http://txz.qq.com/p?k=RvavEHqTh9Bx657kM*iNDFnJ8z9N5itN', path='/D:/Python/pytorchLearn/QRCode/2.jpg', format='QR_CODE', type='URI', points=[(33.5, 167.0), (33.5, 33.5), (167.0, 33.5), (154.0, 154.0)])
这是腾讯的一个二级子域名,在奇安信的情报分析系统查了下,没发现啥问题:
2.再看一下上面链接跳转的界面,也是腾讯QQ的子域名,应该没有啥问题:
3.到这里,没有发现二维码里的内容存在啥问题。但是当我无意间再从评论区打开二维码并保存之后,发现和之前的二维码竟然不一样了,于是又用zxing解析了一下,二维码内容变成了:
可以看到,这个与之前相比,p?k=
之后的内容变了:
BarCode(raw='http://txz.qq.com/p?k=VVKsiATfWgGF5uYfELK*9pcVrbVz4090', parsed='http://txz.qq.com/p?k=VVKsiATfWgGF5uYfELK*9pcVrbVz4090', path='/D:/Python/pytorchLearn/QRCode/3.jpg', format='QR_CODE', type='URI', points=[(33.5, 167.0), (33.5, 33.5), (167.0, 33.5), (154.0, 154.0)])
4.事情开始变得有趣起来了,评论区的二维码每次打开竟然都不一样。而且当我用一个QQ号扫码当前的二维码之后,再用其他QQ号扫描二维码就会出现这种情况:
可以初步判定: 链接中p?k=
后面的内容起到一个标识作用,当一个用户扫描之后,服务端可能就会重新更新,导致其他用户不能再扫一个同样的二维码了。这也比较好理解,服务器端获取了授权之后,需要将用户的cookie与对应的用户信息标识起来,对上号。
5.那我的QQ权限到底是怎么被别人获取的呢?
有过腾讯开放平台开发经验的同学到这里应该就大致猜到了。这是QQ空间开发接口文档,只需要在上面申请,开发者就能使用QQ空间的登录功能,将这个功能放到自己的项目上实现第三方验证。
我的猜测是:黑客自建了一个假的跳板,并申请了QQ空间登录接口,当用户点击授权登录之后,其实是把用户的cookie发给了黑客自建的跳板上,这样黑客就可以直接通过cookie登录QQ空间,发说说、评论、留言等。
6.为啥每次打开评论区的二维码图片,二维码包含的内容都不一样?
这个也困扰了我很久,但是当我自己也在评论区发个正常的图片,就发现了其中的差异:
有问题的评论区前端代码:
普通的评论区前端代码:
可以看到,有问题的评论区前端代码链接到了其他的地方,链接地址中存在两个页面,比较诡异。初步推断是:在评论区发送的并不是一个图片,而是一串包含外链的字符,外链连接的地址可能是hacker自建的一个跳板,打开QQ空间时,其实是自动从跳板读取图片并显示。这下也算是能解释通了!
7.到这里大致的流程是搞清楚了,于是我申请了一个小号测试了一下,果然过了2个小时,小号也在QQ空间发送了广告,还去别人评论区和留言板里发广告
应对方案
主要问题是cookie泄露导致的,正常cookie也是有时效的,但是黑客已经能够在时效做很多事了,而且现在很多东西写好脚本,就可以全部自动化操作了。
所以最好的方式就是更新cookie,但是暂时不清楚腾讯的QQ空间是怎么计算cookie的,所以这里可以直接改密码,当密码更改之后,所有的鉴权、验证肯定都会初始化,一招解决所有!
注: 在技术分析那里,涉及到的技术很多,可能说起来比较简单,但是做起来还是存在一定难度。可以肯定的是,腾讯也有一定的防御措施,但是这位hacker能够钻到空子,还是挺厉害的。
对于QQ第三方登录可以查看之前共享的一个demo:
JavaWeb实现QQ第三方登录文章来源:https://www.toymoban.com/news/detail-411115.html
没有网络安全,就没有国家安全,请大家共同维护网络安全!!!文章来源地址https://www.toymoban.com/news/detail-411115.html
到了这里,关于QQ被盗的自救、事故分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!