代码之美
首发于代码之美
XSS实战:我是如何拿下你的百度账号

XSS实战:我是如何拿下你的百度账号

XSS漏洞想必很多行内人士都有所耳闻,这次我要分享的挖洞经历也是非常的意外。

很多时候自己随手播种下的xss代码,有可能会在某一天神奇的带给你惊喜。

这里不会讲XSS的基础知识,但是会通过一个真实的案例带你挖掘百度网盘的一个存储型XSS漏洞,这个漏洞原理非常简单,我能挖掘到更多的是靠运气,同时他也会是一个非常基础的实战教材。




故事还要从很久以前说起,在以前百度网盘的客户端上有一个可以修改昵称的地方,当时使用百度网盘客户端本身来修改这个昵称最多只能修改10位,但是我通过抓包,修改包,重发包这个步骤发现可以将该昵称修改为一个很长的字符串。


当时就想,既然他们这里只是前端做了限制,那么是不是意味着我把<script>alert(1)<script>这样的字符串放进去也是不会做过滤?而且刚好通过这种方法也绕过了前端的长度限制,有可能这里存在存储型XSS漏洞,因此我将昵称修改为了<script>alert(document.cookie)<script>。


存储型XSS是什么呢?存储型XSS漏洞又叫做持久型XSS漏洞,因为这种漏洞本身是将具有攻击性的代码(又叫playload)持久化的存储在目标业务中的某个地方(比如说数据库, 缓存等),在另一个地方又会把这个攻击代码显示到页面上,显示的时候浏览器会将它当作合法的script脚本执行,便开始执行了具有攻击性的JavaScript脚本。这个提交你的攻击代码的地方就叫做输入点,显示你具有攻击性代码的那个位置就叫做输出点。

既然是挖掘存储型XSS漏洞,并且我们已经找到了输入点,那么就要找输出点了。当时我在百度网盘的各个页面都做了全局搜索,结果能找到的地方都过滤了输出。于是我就没有去管这个漏洞了。

大概过了几个月之后,偶然有一天晚上我在网上认识的一个网友准备通过百度网盘自带的给好友分享功能给我分享文件的时候,突然他跟我说在点击分享列表准备选择分享用户的时候突然弹出了一个网页对话框,内容就是他的cookie,我突然心中一惊,莫非输出点是在这个地方?原来这种输出点是需要交互,点开某个窗口之后才会渲染出来的,这属于一种比较隐蔽的输出点,怪不得我之前一直没有找到。看来渗透测试是一个细节点都不能放过啊。

如果大家有心,平时可以随手把自己注册过的一些网站的个人信息改成各种xss脚本,说不定哪天运气好就挖到了一个XSS。随手播种,坐等收获。

于是赶忙再去通过抓包,改包,重放这个过程,将昵称改为xss平台的收信脚本,然后重现这个过程,发现居然可以打到cookie,而且cookie中包含了百度账号最关键的BDUSS字段,该字段是百度账号用于鉴别用户身份的唯一字段,几乎所有百度业务中只要有该字段,等于拥有了同等账号权限。

通过社工让对方给你分享文件的时候,神不知鬼不觉的情况下,你就把对方的百度账号沦陷了,而且现在很多人都用了百度网盘的云盘同步等功能,导致你手机上的短信,通话记录,通讯录,照片图库等一览无余。尤其是短信同步功能很危险,比如说百度贴吧的吧主审批操作就是通过短信验证码的方式判断,如果短信同步了,那么我们在拥有这个账号的情况下,只要通过查看同步到云端的短信,就可以通过他的账号审批通过自己账号的吧主申请,想想多么可怕。

这个漏洞最后我是提交到了乌云,rank给了13,送了娃娃钥匙扣等小礼物。后来我听一个安全圈的朋友说他提交过类似漏洞是有很多积分,可以换各种购物卡之类的等额现金奖励,我这个漏洞如果提交到百度私有的BSRC可能有三位数到四位数的现金奖励,唉有点可惜啊。

如果你们在各大乌云镜像站搜索【百度网盘】等关键词应该能找到该漏洞详情。


本文章由 @昌维 原创,在知乎专栏-代码之美 https://zhuanlan.zhihu.com/codes 首发,转载请注明出处,谢谢。

编辑于 2017-03-26

文章被以下专栏收录

    对于一些人来说,编程可能只是一项工作,对于另一些人来说,编程就像一种创作,对于少数人来说,编程仿佛是一种艺术。我希望你看完我的专栏,能成为最后的少数人。 我希望把自己的学习经历,自己所了解到的许多专业知识分享给你们,让许多充满热情与创造力的programmer能够不被那些学习道路上的BUG拦住了你那颗火热的上进之心。 也许我废话连篇,也许我有技术性的错误,也许我在写作方向上与你的口味有所不对,希望你能私信与我畅谈,你们的宝贵意见,你们的批评与见解将帮助我和其他我专栏的关注者带来更好的体验与收获。 QQ交流群:255258140