主页 > 网络知识 > 二维码劫持案例分析(2)

二维码劫持案例分析(2)

 

二维码劫持案例分析

 

(3)受害者扫描二维码

(4)获取到session:

 

二维码劫持案例分析

 

(5)登录受害者账号:

 

二维码劫持案例分析

 

自行脑补下登录成功的样子吧。。为了脱敏。。。这篇文章仅仅讨论技术。

B网站登录处存在二维码劫持漏洞

登录处:

 

二维码劫持案例分析

 

二维码登录流程:

(1)获取二维码和 key

(2)轮询(很长一段时间不会过期)

(3)用户扫描二维码或点击登陆链接确认登录,轮询将返回openid

(4)登录

其中,获取链接和key的阶段。是没有做请求来源校验和csrf token的。意味着任何人任何地点都可以请求获取二维码和key:

 

二维码劫持案例分析

 

请求链接:

/xxxx/getWxQrcode?xxx=xxxx(GET参数不重要)

接着轮询:

 

二维码劫持案例分析

 

请求链接:

https://b.com/xxxx/checkWxQRState?QRkey=QRkey

这里的请求参数中的QRkey就是在上一步获取二维码和key时,获取的响应参数 QRkey。

此时需要用微信扫描二维码。本人分析了一下,发现二维码链接如下:

 

其中 /scan/后的字符串就是我们的QRkey。只不过这个链接必须在微信中打开。

微信打开后,轮询返回了一个openid,这个openid应该是绑定这微信的,同一个微信号返回的openid都是一样的:

(偶然发现,如果微信没有自己去改微信号,就是openid的值哦)

 

二维码劫持案例分析

 

获取到openid后,openid和QRkey构造一下链接。如果微信绑定了账号的,即可登录。

登录链接:

https://b.com/xxxx/qrWxLogin?openid=oo6-IuOhwxxxxxxxx_hOI&QRkey=gQH18DwAAAAAAAAAAS5odHRwOi8vd2Vpxxxxxxxxxxxxxxxxx4SU1xxxxxxxSU1EAAgTY5YVeAwRYAgAA

根据此流程,可构造钓鱼页面。

攻击流程:

(1)开启php相关环境,使受害者能够访问test.php;运行python脚本(attack.py),开始轮询。

(2)受害者访问恶意页面(test.php),用微信扫描二维码,然后点击b网站那里的登录确认 或者将链接直接微信发给受害者,受害者微信处点开

(3)此时attack.py中获取到openid,组合成登录链接。攻击者可使用登录链接登录受害者账号

使用php和python来写:

钓鱼页面:

 

二维码劫持案例分析

 

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!