大家经常会看到QQ空间自动转发一些附带链接的不良信息,即便我们的QQ密码并没有被盗取。最近通过对一个QQ空间自动转发链接进行分析,发现该自动转发机制通过利用腾讯网站存在漏洞的页面,精心构造出利用代码获取用户的QQ号和skey值,从而获得用户的一些敏感操作权限。并通过该漏洞自动转发一些不良信息诱导用户点击,从而导致大面积传播。

传播现象
如果有一天,你发现好多QQ好友空间都在发一条说说,并且这个说说附带了一个链接,像下图这样:

此时你就要注意了,那个网页你点进去你也会一起中毒,并在你没有察觉的情况下在你的空间转同样的内容。
针对这种情况,我们通过分析其原理得知其转发机制,下边我们以一个实例,并用最容易理解的方式来告诉大家这种不良信息是如何转发以及如何防范。
转发机制
腾讯地图的一个实时竞价页面存在一个XSS漏洞,由于没有对请求参数做严格检查,通过精心构造的请求数据导致返回信息中的数据可被利用来执行js代码,同时服务器没有对请求来源进行检测,因此可以造成CSRF攻击。
查看之前抓取到的利用该漏洞进行不良信息转发的页面,在该页面开头嵌入了一个iframe标签如下:

标签style为隐藏属性,从而使得该插入页面不会被用户发现,插入的页面链接就是构造好的url地址。
当页面被加载时,页面通过这个url接口向腾讯地图的RealTime Bidding服务器发送一个请求,服务器没有对请求来源进行效验,直接将请求的数据返回,并附带了一些查询信息,如下图所示,其中exploit是构造的利用代码。

当exploit = “</script><svg><script>eval(window.name);//”,请求服务器之后iframe标签里的内容就变成下边的内容:

利用代码中的标签“</script><svg><script>”用于绕过浏览器的XSS过滤器,浏览器会将这三个标签忽略掉只留下后边的内容,然后第一个注释符号将后边的内容都给注释掉了,最后的有效内容就一句:eval(window.name)。之后eval会将字符串name里边的内容当作js代码执行,其执行结果就是在文档结尾创建<script></script>标签去加载执行js主功能模块http://conf3.gamexm.net/moo.js。主功能js部分代码如下所示:

该js代码做了混淆,其按照OlOlll=”(x)”的方式进行替换,我们还原第一部分代码为:

eval("var l = function(x){return String.fromCharCode(x)}");

该处生成一个函数I,其功能是返回数字对应的ascii码,下边利用该函数将一些数字还原成新的函数,依次类推,最后解出来的功能代码如下所示:

代码通过document.cookie获取用户的cookie信息,然后从中提取uin值和skey值,通过抓包可以看到,uin值是由o开头加上QQ号组成,因此相当于就获取了用户的QQ号,skey是以@开头的一段字符。之后调用函数document.createElement创建了一对script标签来执行如下脚本:

其中参数q是QQ号,k为skey的值,getGTK(str)是为了给skey签名,这样可以确保skey是有效的。该脚本把获取到的QQ号和skey值通过附加到链接参数提交给远程服务器。

利用Skey进行敏感操作

Skey 是一次性口令,服务器为每个用户建立一个skey作为用户的权限代码,服务器验证该值即可获取用户的一些权限操作,该值会被浏览器记录在cookie信息中,只要用户不退出登录就会有效。也就是说如果获得一个QQ号码的Skey代码,也就相应的拿到了对方QQ登陆和管理权限,通过调用相应的操作接口API,即可不通过用户密码实现对用户空间,相册的访问权限,同时也可以发表说说,删除留言等一些敏感操作。

下边进行一个简单的测试来实现在QQ空间发表状态。

首先通过抓包获取到cookie信息中的uin值和skey

然后我使用curl命令通过发表说说的api向服务器发送一个包,包内容如下:

Curl命令执行过后,会在我的空间就自动发了一条说说:this is a test

由此想到了之前的天涯病毒营销系统,它是通过服务端配置中间收信网站后生成客户端,当用户点击客户端样本后,其客户端样本使用WebBrowser控件加载QQ邮箱快速登录,再利用自动填表的方式让软件自动点击“快速登录”按钮,进而可以得到本机QQ当前登录的Client Key,然后将QQ号和ClientKey提交到远程服务器上,服务端即可通过该ClientKey进行QQ登录操作,登录之后具有访问QQ空间,QQ邮箱,财付通,修改个人资料,上传文件到QQ群共享等操作。这里的ClientKey和skey其功能相同,都是一个权限代码。

修复方案和建议

1. 针对用户,不要随意点击一些不良网站信息,如果不小心中招,解决方法就是快速退出空间,如果是手机登录的话就要退出QQ,重新登陆QQ,这样会产生新的skey,原来的skey就失效了。如果只是单纯的刷新网页,或者关掉手机QQ空间,则不会改变skey。

2. 针对漏洞厂商,要检测所有接口的输入参数,进行严格过滤,防止XSS漏洞的产生;同时要对数据请求来源进行判断,非同源数据过滤掉,从而防止CSRF攻击。

技术揭秘QQ空间”自动转发不良信息相关推荐

  1. 技术揭秘“QQ空间”自动转发不良信息

    NEET & Independent Researcher 博客园 首页 联系 订阅 管理 公告 文章大多为转载 仅留作资料备份 Link  个人主页 - Github   一只猿 - 前端攻 ...

  2. Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据流程分析【转】

    Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据&流程分析 QQ空间说说抓取难度比较大,花了一个星期才研究清楚! 代码请移步到GitHub GitHub地址:http ...

  3. PHP爬虫之QQ空间自动点赞--更换cookie版

    QQ空间自动点赞网上一搜一大把,但是关于php的还是停留在用以前的3Gqq登陆方式获取sid之后再点赞的.而现在貌似3Gqq没法用了, 网上也没有关于最新的.实现QQ空间自动点赞已经很久了,一直没有发 ...

  4. 24行代码简单实现qq空间自动点赞

    什么是Auto.js? Auto.js是基于JavaScript语言运行在Android平台上的工具.它依赖于无障碍服务. 它可以做什么? 解放双手,让手机自动打游戏.自动签到.自动领红包等等等等 它 ...

  5. 基于selenium的QQ空间自动点赞功能(2020年7月版)

    准备工作 简介: selenium是一个基于java开发的自动化浏览器处理器,它更像是浏览器驱动的代理. 配置: 它本身没有配置浏览器,因此需要配合本机上面安装的浏览器驱动一同使用.例如:Firefo ...

  6. php 采集qq空间,php使用curl抓取qq空间的访客信息示例_php技巧

    这篇文章主要介绍了php使用curl抓取qq空间的访客信息示例,需要的朋友可以参考下 config.php<?php define('APP_DIR', dirname(__FILE__)); ...

  7. Python3爬虫实践——QQ空间自动点赞程序(下)

    (发完上一篇博客之后,观察了一个星期发现阅读量迟迟突破不了50大关,蓝瘦香菇+心疼自己T.T,于是果然又找到了各种拖延的理由,刚才登博客的时候突然发现有人评论期待我的下篇,立马精神振奋!开始敲字.) ...

  8. qq空间java_Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据流程分析...

    QQ空间说说抓取难度比较大,花了一个星期才研究清楚! 代码请移步到GitHub GitHub地址: 1. 截图看一看效果: 1.1抓取执行过程: 1.2 部分数据截图: 1.3 每一个说说的具体内容 ...

  9. JS实例操作QQ空间自动点赞方法

    做开法的小伙伴都知道我们在查找网络资源时,通常会通过 使用谷歌浏览器的 F12 对页面元素进行操作,且可以查看一些网络资源,当然火狐浏览器也有这种功能,不是IE就好了. 打开QQ空间 按下 F12 , ...

  10. [转] JS实例操作QQ空间自动点赞方法

    做开法的小伙伴都知道我们在查找网络资源时,通常会通过 使用谷歌浏览器的 F12 对页面元素进行操作,且可以查看一些网络资源,当然火狐浏览器也有这种功能,不是IE就好了. 打开QQ空间 按下 F12 , ...

最新文章

  1. R语言使用car包的durbinWatsonTest函数检验回归模型的响应变量(或者残差)是否具有独立性(Independence、是否具有自相关关javascript系autocorrelated)
  2. 12.3、Libgdx的图像之截屏
  3. Java 内部类示例
  4. Scalaz(44)- concurrency :scalaz Future,尚不完整的多线程类型
  5. Linux常用文件和目录操作
  6. MYSQL进入客户端后切换服务器的简单做法试验
  7. ndroid中View.inflate()
  8. Eclipse去除js(JavaScript)验证错误
  9. sql错误索引中丢失_收集,汇总和分析丢失SQL Server索引统计信息
  10. 用python画简单的图案-使用 Python Turtle 设计简单而又美丽的图形
  11. CSDN统计出错:一天访问量竟然有48798
  12. ENVI学习总结(十二)——基于改进的 CASA 模型反演 NPP
  13. 手动验证 TLS 证书
  14. T100——错误信息提示传入参数显示
  15. 如何用Python开发QQ机器人
  16. 【学习笔记】Python_Faker,制造测试数据的第三方库,创建姓名、手机、电话、浏览器头、时间、地址等
  17. 阿里云企业邮箱设置三方平台管理
  18. python关机usb端口_使用python关闭windows中的特定USB端口
  19. 如何使用S32DS开发KEA系列的LIN功能(二)
  20. 什么是BFC?以及形成BFC的条件

热门文章

  1. 序章:企业潜规则认知
  2. VMware虚拟机XP系统安装
  3. 软件工程实践 Blog17
  4. FindBugs错误描述
  5. python打印网页成pdf_html – 在chrome-python 2.7中自动打印/保存网页为pdf
  6. 2022年道路运输企业安全生产管理人员报名考试及道路运输企业安全生产管理人员模拟试题
  7. Ubuntu 16.04 双网卡 同时上内外网
  8. 逻辑结构与存储结构关系
  9. 0matlab计算锚泊系统,一种基于蒙特卡洛仿真的计算锚地容量的方法与流程
  10. 统一门户建设项目最佳实践