[转载]聊着聊着我就上了你……的微信(两处都可以劫持微信登录的漏洞)_黑客技术.
一、mac版客户端登录的劫持
mac版客户端的扫码登录确认页的请求为如下(有些以星号代替了)
http://szsupport.weixin.qq.com/cgi-bin/mmsupport-bin/qrcodelogin?username=*********&key=*************&clientversion=25030133&devicetype=Android-18&lan=zh_CN&uuid=AXBIICc4sUSDsFnefkNP&pass_ticket=DebNjGnP2dJnq1bMvHvgL%2BezqqE70Ry9iWB625%2FRT8RRnwCD3tlq3qxuxG5YPzhx
经过测试可发现,此请求无需用户扫码动作确认,也没有签名保护,其中username和uuid分别是用户的微信号和二维码字符,很容易得到。key无法被攻击者猜出,但是也可以通过别的方式得到,比如如下方式
微 信的公共账号发的文章url为这种:http://mp.weixin.qq.com/s?__biz=**********==& mid=10000001&idx=1&sn=bdc73ae816f2e7097c225b6070b1f2f2&from=singlemessage&isappinstalled=0#rd
在 微信中打开这种链接,最终的目标页会被微信浏览器加上key和pass_ticket参数,这样只要我们能在这篇文章中插入个自定义url的图片即可通过 referer偷到这个key。公众账号发表的文章不可以直接写自定义的IMG,但通过修改http请求里的参数就可以把图片地址换成我们自己服务器上的 url了
这样只要发送给受害者点击,或者欺骗他扫描此链接的二维码,然后就可以得到key,然后拼接那个扫码登录确认页请求,点击确认登录,我们的客户端就可以自动登录了
二、网页版微信登录的劫持
网页版客户端的扫码登录确认页的请求为如下(有些以星号代替了)
http://login.weixin.qq.com/confirm?uuid=e921eed1fbf84e&key=*****************&lang=zh_CN&scan=1406467880&clientversion=25030133&devicetype=Android-18
经过测试可发现,此请求也没有签名保护,但需用户扫码动作确认,其中uuid分别是二维码字符,很容易得到。key的话也可以通过如上方式获得。所以我们需要做的就是再让用户扫下码。
网页版二维码链接原文是这种https://login.weixin.qq.com/l/e921eed1fbf84e,经测试发现,可以直接把这个链接发送给用户访问,也可以达到用户扫描的效果
这样只要给受害者发送两个链接诱惑他点击,或者让他点击一个页面然后诱惑他去扫描内容中的二维码,就可以得到key,并让我们的请求合法。然后再拼接那个扫码登录确认页请求,点击确认登录,我们的网页版就可以自动登录了
漏洞证明:
首先在公众账号的内容中加入自定义图片
mac客户端劫持:
先发送欺骗她点击
然后我会收到
然后在浏览器点击确认登录
最后登录成功
网页版微信劫持:
先聊
然后收到key
修复方案:
如果没有需求,尽量公共账号发的消息文章中不允许有自定义src的图片
保护好get参数key不被referer等泄露,如果可以尽量用post
mac版的扫码登录需要做成和网页版一样,需要用户扫码确认才可以
对登录确认页的参数进行签名校验
等等……