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解析的内网又不是同一个,所以前面也说了本来想搞台内网机器再发出来,但是想想还是点到为止算了,毕竟里面不少漏洞还是很简单易用的,甚至还有不用验证的,赶快发出来算了。