哔哩哔哩某后台系统内网小窥(逆密码加密算法,绕google 2次验证)

漏洞概要

缺陷编号:WooYun-2015-0129696

漏洞标题:哔哩哔哩某后台系统内网小窥(逆密码加密算法,绕google 2次验证)

相关厂商:bilibili.com

漏洞作者:染血の雪

提交时间:2015-07-27 15:21

公开时间:2015-09-10 20:38

漏洞类型:成功的入侵事件

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

Tags标签:

漏洞详情

披露状态:

2015-07-27: 细节已通知厂商并且等待厂商处理中
2015-07-27: 厂商已经确认,细节仅向厂商公开
2015-08-06: 细节向核心白帽子及相关领域专家公开
2015-08-16: 细节向普通白帽子公开
2015-08-26: 细节向实习白帽子公开
2015-09-10: 细节向公众公开

简要描述:

哔哩哔哩弹幕视频网 - ( ゜- ゜)つロ 乾杯~
啊哈哈,佐佑理不清楚~
什么..你居然发现了这里?.你吓到我了啦.本次渗透仅涉及某后台系统,并未涉及主站服务器或数据库;发出来只为交流思路,想看装逼的可以退散了。
本来想进到主站内网再发出来的,因为光看这次的成果其实并没什么。但是如果利用这次收集到的信息应用到主站内网真的后患无穷。不知道鼻屎老爷你怎么看~先来个小福利,bilibili官方debian源:
deb http://mirrors.bilibili.co/debian/ wheezy main non-free contrib
deb-src http://mirrors.bilibili.co/debian/ wheezy main non-free contribdeb http://mirrors.bilibili.co/debian-security/ wheezy/updates main
deb-src http://mirrors.bilibili.co/debian-security/ wheezy/updates main

详细说明:

0x01 信息收集这次渗透先要从git说起。之前在乌云看到有人报过bilibili存在git的洞( WooYun: bilibili某站git服务配置不当,造成信息泄露 ),就去隔壁biligame扫了一下git,不出所料的扫出了不少(可能不止这些,其它请自查):

不管三七二十一,先全下载下来慢慢看。其中明感信息还是有不少的,如数据库用户名密码什么的,反正都是弱密码我这里就不发出来了。其中在源码中的一个地址引起了我的注意:

这个域名之前信息收集没收集到,打开发现是个后台地址。于是试了一些如注入万能密码之类的常见手段均无果。0x02 惊喜发现各种手段无果后,便只能投向C段,因为我大B站肯定不止一台服务,于是用nmap快速扫描了一下C段。结果发现这台服务器开着5900VNC端口,便随手试了一下失传已久的VNC黑武器,结果居然可以连上。更让我惊喜的是成功绕过VNC验证后,随手试了个弱密码(root/bilibili)居然还让我登陆了,这真是中大奖了...Σ(  ̄□ ̄||)

0x03 内网之旅拿到一台机器的权限以后便开始了我的内网之旅,首先国际惯例我先翻看了一些常用目录,看到/bin/下有不少别人传的工具,看来我还不是第一个来到这里的人,不过也方便了我的不少操作。

翻了一下目录没找到任何动态页面,于是我便用find命令找了一下,结果的确没有任何页面。不过看主机名字我猜到这台主机大概是做什么的了,因此没页面也很正常。(到很后面回过头来看才发现其实这台主机还有一个很重要的作用就是radis服务器)由于Redis Desktop Manager打开都是乱码,我就直接用命令了,有点占版面请见谅。下面是radis服务器信息

radis键

然后就是放眼内网了。我用nmap扫描了该网段发现有五台机器存活,ip地址分别是:

而我目前所在的机器是192.168.122.13,也就是说本地还有四台机器。我用最简单暴力的的方法去试,也就是用之前发现的弱密码去尝试,结果还真的成功的登陆了另一台机器:192.168.122.14。登入后发现这台居然是数据库服务器,而且本地登陆mysql不用用户名密码(其实即使有密码我们也可以通过history获得)。这个数据库应该是后台的数据库,而且是管理后台的统一登陆(应为都是后台所有打码有点狠,但可以看到都是B站的域名):

用户表:

根另外,据第一张表提供的数据发现其中一个后台可以不用认证就可进行操作,图发出来你们自己知道是哪个后台,本来想和客服妹子说的,结果被发现是足控后羞羞的躲起来了,我真是太没用了。(● ̄(エ) ̄●)

然而并没有什么卵用因为密码CMD5一个也解不出啦,应该是加了盐;而且目测还有二次认证。而后又进入了迷惘期............................................................不过运气很快就再次降临,某次误将192.168.122.14当成了192.168.122.13,结果发现192.168.122.14可以不用密码就可以登录其他三台服务器,至此内网五台机器全沦陷。下面简单说一下其他几台机器的作用:app:即后台网页服务器;infocc:安装Nginx却未发现任何页面,但是80端口大量对外连接(初略估计在50页以上),判断应该是某手机app的服务器;cn-gamesdk-2:提供部分B站二级域名网页的服务器,同时还充当网关,管理员习惯通过该机器登陆其他机器。0x04 逆向分析加密算法,及通过google 2次验证在app服务器中发现了一个dashboard.war的包,打开后发现是后台的网页源码,既然都下下来的就随手逆一下咯。如果成功逆出加密算法,由于我有数据库操作权限,我就可以直接在数据库里添加一个用户。于是经过一番折腾后在某class文件逆向后的伪代码里发现了密码加密的核心算法:

于是快速写了个java验证脚本:

用这个脚本,经过几次测试发现,我更本不用在数据库里添加用户,因为不少用户是弱密码:123456,还有不少密码和用户名一样的。二次验证其实更简单,经过对源码的分析发现,他其实用的是谷歌的一个身份验证系统,可在play store里直接下载:

而经过对源码的分析其中的密钥应该就是前面数据库截图里的seed字段:

于是只要输入正确的用户名密码,在口令处输入上图google身份验证器生成的动态码就能成功登陆后台:

其实到这里依然没什么卵用,由于不少子系统的DNS都解析到内网,但是貌似这个系统的内网和DNS解析的内网又不是同一个,所以前面也说了本来想搞台内网机器再发出来,但是想想还是点到为止算了,毕竟里面不少漏洞还是很简单易用的,甚至还有不用验证的,赶快发出来算了。

漏洞证明:

0x05其他除两台弱密码的机器以外的三台机器的密码:密码都是Liunx SHA 512加密的,不靠猜基本无解。

在cn-gamesdk-2中发现四个5900的连接其中两个来自荷兰一个来自美国,另一个来自360。难道比我先到的前辈就是360的?

修复方案:

0x06 建议清理git信息,升级VNC,修改弱密码;发现后台可以被搜索引擎搜索到,合理设置robots.txt,或者干脆全内网+vpn吧;设置mysql本地登陆密码;去除data机器ssh到其他机器不用验证,这个我也不知道这么说,就这样吧~;建议管理员尽量用ssh访问服务器,有迹象表明管理员喜欢用Telnet,哈哈,这都被我发现了╮( ̄▽ ̄)╭;及时清理.bash_history等记录,找密码什么的实在太方便了,其中好多密码我都没写出来,如redis密码,mysql密码之类的,我还是很良心的。今天早上洗杯子的时候杯子居然爆了,现在手上都是玻璃划的小口子,我是满手是血的码完这篇文章的,相信我大B站不会让我失望的。还有就是运维很辛苦的不要开除他。

漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2015-07-2720:36

厂商回复:

谢谢

最新状态:

暂无

评价

  1. 2010-01-01 00:00 小龙 白帽子 | Rank:1634 漏洞数:152)

    我猜在我评论的时候都没人能抢到我的一楼^_^

  2. 2010-01-01 00:00 xtnnd 白帽子 | Rank:105 漏洞数:10)

    壮哉我大B站

  3. 2010-01-01 00:00 小龙 白帽子 | Rank:1634 漏洞数:152)

    @xtnnd 我比你快0.1秒- -

  4. 2010-01-01 00:00 泳少 白帽子 | Rank:158 漏洞数:20)

    有点意思

  5. 2010-01-01 00:00 不二 白帽子 | Rank:50 漏洞数:3)

    哔哩哔哩( ゜- ゜)つロ 乾杯~。

  6. 2010-01-01 00:00 Ricter 白帽子 | Rank:101 漏洞数:10)

    从 lizeqiangd 到内网 🙂

  7. 2010-01-01 00:00 小小泥娃 白帽子 | Rank:12 漏洞数:2)

    前排

  8. 2010-01-01 00:00 橘子 白帽子 | Rank:0 漏洞数:0)

    @Ricter hhhhhh可怜

  9. 2010-01-01 00:00 xtnnd 白帽子 | Rank:105 漏洞数:10)

    @小龙 你不行she那么快

  10. 2010-01-01 00:00 http://www.wooyun.org/corps/苏州同程旅游网络科技有限公司 白帽子 | Rank:0 漏洞数:0)

    绕双步验证是怎么做到的,求修复后公开。

  11. 2010-01-01 00:00 高小厨 白帽子 | Rank:910 漏洞数:71)

    牛逼

  12. 2010-01-01 00:00 端端 白帽子 | Rank:191 漏洞数:16)

    话说google二次验证,难道洞主说的是dashbo******g.bilibili.com
    话说怎么绕的,关注

  13. 2010-01-01 00:00 染血の雪 白帽子 | Rank:178 漏洞数:17)

    @端端 是的

  14. 2010-01-01 00:00 染血の雪 白帽子 | Rank:178 漏洞数:17)

    @端端 你是360的?

  15. 2010-01-01 00:00 端端 白帽子 | Rank:191 漏洞数:16)

    @染血の雪 不,前一阵子被卡在这个二次验证上了…………

  16. 2010-01-01 00:00 小胖子 白帽子 | Rank:1429 漏洞数:107)

    5?呵呵

  17. 2010-01-01 00:00 range 白帽子 | Rank:69 漏洞数:7)

    5!!!

  18. 2010-01-01 00:00 qhwlpg 白帽子 | Rank:141 漏洞数:13)

    竟然没有雷劈!!!

  19. 2010-01-01 00:00 撸至深 白帽子 | Rank:8 漏洞数:1)

    拿5毛滚粗!

  20. 2010-01-01 00:00 默之 白帽子 | Rank:375 漏洞数:34)

    太低了,才5rank

  21. 2010-01-01 00:00 xtnnd 白帽子 | Rank:105 漏洞数:10)

    66666666

  22. 2010-01-01 00:00 Evan 白帽子 | Rank:15 漏洞数:2)

    555555555,哈哈

  23. 2010-01-01 00:00 PyNerd 白帽子 | Rank:134 漏洞数:17)

    据说洞主去了B站

  24. 2010-01-01 00:00 xyzz 白帽子 | Rank:0 漏洞数:0)

    运维很辛苦, 不要开除他...

  25. 2010-01-01 00:00 onpu 白帽子 | Rank:115 漏洞数:8)

    竟然是5

  26. 2010-01-01 00:00 凯茵 白帽子 | Rank:20 漏洞数:1)

    码了那么多字才给5分...(⊙o⊙)…

  27. 2010-01-01 00:00 milan 白帽子 | Rank:73 漏洞数:8)

    都对不起你码的字

  28. 2010-01-01 00:00 roger 白帽子 | Rank:11 漏洞数:1)

    太低了,才5rank;大神5900怎么利用的,是弱口令吗

  29. 2010-01-01 00:00 roger 白帽子 | Rank:11 漏洞数:1)

    楼主,我看了下你的文章,你看到/bin/下有不少别人传的工具,看来我还不是第一个来到这里的人,不过也方便了我的不少操作,这个截图能看看黑客留下的工具吗?

  30. 2010-01-01 00:00 橘子 白帽子 | Rank:0 漏洞数:0)

    [email protected]..
    林伟?

  31. 2010-01-01 00:00 #6c6c6c 白帽子 | Rank:237 漏洞数:20)

    b站负责安全的有点不要脸,才5分?