|
|
今天在网上看到有人发了强制聊天的工具,是web版的,于是谷歌了一下。找到了由杨元公布在乌云网上的bug,顺便测试了一下,可惜腾讯已经修复了。(表面上腾讯忽略了杨元的报告)% f# g6 M/ K. Z3 ~8 v2 y9 Z: y+ g0 ?
在QQ空间中,有一个谁看过我的功能,然后我们把鼠标移到他们的头像上,会弹出一个信息卡片。. Y1 d4 ?$ }) ]- X: J
4 \9 E8 E. }" M- j
, T+ M5 c9 F6 w% D, o7 ~3 K5 \1 y
/ |* f/ {$ K1 B7 X4 e- K0 E信息卡片上有一个聊天功能,也就是这个接口,出现了严重的bug。抓包发现聊天的接口为:' L5 e; ]$ B7 i% C
( h. C9 x4 D' \http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=20737302&to_uin=569550119&g_tk=1593160781* c$ C3 _3 k% |$ K+ x
$ c2 y8 d% m* V$ ~
里边有两个重要参数qzone_uin发起QQ(以下简称sender),to_uin接收QQ(以下简称receiver),指定这两个参数后,请求接口,返回信息如下:, y2 X: u0 `( U- M2 q- ~$ a3 V
0 N" w+ P9 @" ]
, S. Z) g& D( Y2 Y5 e- G) u& m
<script type="text/javascript"> - ) l2 e$ l- p, ?* d4 _" K% R& b
<!-- -
3 u: Z; N$ k& Vvar url = 'tencent://message/?Menu=yes&uin=569550119&Service=112&SigT=ff8847c4116e035fd4b467f691cd9e42c0d413cec47eefb75d5e970421a2376ab400fffb0ea6cb8a&SigU=8a718a0cd8eba14b389fceb5788e72797b8a7eae107b9c43dd56bc7cc21090bccf67158b657963841c529232def3d416761799a1050acaaa29033f62f7fb46b5580fef571e7d82041508e926d65900ae77fae70b9cc4a341b7677c65b215d0327211235a5702bb6564157a3dfc11abe4'; - 6 w) Q4 y/ m/ E, h. ] S Z3 U
location = url; - 6 c/ M( T6 ^* t7 e( X3 W
//--> -
- </script>
% N6 W ?9 P- H- h0 s& c " J2 ^+ n: Q8 y! Z4 E" z1 S
3 L: E4 h4 u6 F& k0 D
这里边又有三个非常重要的数据,经过大量实践,发现:uin是接收人的QQ,SigT是receiver的指纹,SigU是sender的指纹。
9 u, F% `: u/ n1 x Q/ ]( G& d( Q- I! P$ }2 w
由此可见,有了这两个指纹,然后访问tencent://message/接口,就可以发起临时会话。8 z' g1 `' T8 ?" a4 }9 n5 E9 f
# W7 N" ~0 v: k: p* `: f/ b8 D/ K8 K7 v- t% s0 G% V+ H) {+ @$ L
' h$ w+ Q% }0 U
7 _" E% p' V1 L {这里边又有三个非常重要的数据,经过大量实践,发现:uin是接收人的QQ,SigT是receiver的指纹,SigU是sender的指纹。5 ^8 ^( q1 B# g7 Z& ~, y; D( C
5 G6 q$ ~6 x8 V/ c. U
由此可见,有了这两个指纹,然后访问tencent://message/接口,就可以发起临时会话。
0 r; _( j1 k" @" C3 d. ^9 [ H& q6 G
那怎么实现强聊呢?
& j" t% N$ \, W: J V( M- g$ n3 L! O5 B) D% z/ U2 }) |
小虫直接说结论,想强聊,必须知道自己一个好友的QQ号和被聊人一个好友的QQ号。这两个条件均不难实现,自己的QQ好友您还不知道么。。。而被聊人的QQ好友,也是很容易获取的,比如你想和你同班的美女聊,那么班主任的QQ就是切入点。
1 {' A* K' X' F3 n% \, C6 {! [ n" N( N4 p0 t! O
为什么需要这么奇怪的条件呢?小虫直接演示。
! e$ d! b4 q4 m$ r/ l; J$ \8 f+ g" L1 h
假设有四个角色,分别是A(发起人),AF(发起人好友),B(接收人),BF(接收人好友)7 @8 f* ]: Q4 f/ r: |
6 I2 w, `! F. g第一步,我们需要在A和AF间建立一个通道,将A作为聊天的发起人,可以这样构造URL:/ P" `- ^$ k% U8 j
4 P; J8 l" W/ Y0 f X1 Shttp://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=A&to_uin=AF&g_tk=1593160781/ S9 c# `: ^' L! ~% ]. E8 L+ c+ ^
! S6 {, w2 @- W2 O; Z5 H6 u# Z+ t+ w
在服务器返回的参数中,我们拿到SigU参数,这个也就是A作为sender的指纹。
F7 D( p, A1 [: T* { n; ]$ z- A5 l. r. f" w/ V
第二步,我们在B和BF间建立一个通道,将B作为聊天接收人,可以这样构造URL:
3 i/ [+ ^3 L; v% o+ G% O2 P$ q8 [4 J) V3 R3 h6 h
http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=BF&to_uin=B&g_tk=1593160781! ?; @2 C8 Z$ N( i/ f+ t: }/ m
# j( J/ f! P6 L# S
3 e( Z/ P# x3 b. v) `9 `2 t! X
在服务器返回的参数中,我们拿到SigT参数,这个也就是 B作为receiver的指纹。/ D5 ?; v8 J- D) m$ F
e/ K. x1 g2 d5 Q
接下来我们把这两个指纹混合在一起,访问tencent://message/接口(别忘了加上最基本的uin参数,接收人QQ),恭喜,可以聊天了! v s$ o g# A, f. a5 C
: O' ^: d7 L) ~2 q4 o. Y3 Z
等等,好像有大问题,假如B和BF不是好友呢?我们并不能保证他们一定是好友,也就是说,我们是猜的。
j3 i7 Y& t% }$ p2 T1 w( [" F; K" |/ ~3 D5 [
: Q2 ?) S [' O9 o+ i
聪明的你可能已经发觉了,这个接口可以测试两个QQ号码是不是好友(前提是被测者未开通QQ在线状态,如果一方开通了这个服务,可以尝试将sender、receiver反过来)!!!6 X& g) j- l% N, \* K3 ?3 ]
5 N( M; ]" H" u3 n' b7 N7 L这是多么邪恶的接口!; ^, c2 D' Z& ]; o: `5 ]% w
9 A- ^# _9 N9 v0 R! k5 U
不法分子可以通过这个接口收费帮别人测试好友,进而导致情侣隐私泄漏,夫妻感情破裂,进而导致社会不和谐,进而导致生产力下降,进而导致科技停止发展,严重阻碍人类进化。
6 {# n O# [ b' ^/ |- r
7 z+ l5 G, }) u8 @3 D最后,补充一句,通过这个方法发起的临时会话,即使没有开启QQ在线状态服务也是可以的,除非你屏蔽了所有临时会话。
7 c" B* w- I" T0 t6 Y! j) h d* R4 n4 t( C' |! A9 [* n: d z
|
|