扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
一个好友在国内某网络游戏企业工作,让我帮忙测试他们游戏服务器群的安全性。加上我这段时间闲得无聊,也就答应了。
我先下载了游戏客户端程序,得到到了几个游戏服务器的地址。
游戏帐号在WEB网站上也可以注册,看来游戏中央数据库的调用WEB网站也可以。
先仔细的检查了一下WEB网站,大部分是PHP+MYSQL的。代码写得还不错,几乎找不到什么突破口。再看看MYSQL,禁止远程连接。查看了其他游戏服务器,都是LINUX系统,都只是开了OPENSSH和游戏服务器程序端口。只有WEB网站多个80,而又没什么可利用的地方。
看上去安全做得不错,但这是种幻象!
随后仔细分析了下游戏客户端程序,我打开SnifferPro以便记录下客户端程序和服务器的所有通信。发现客户端程序有个自动更新功能,我Sniff到是通过FTP去下载更新文件的。但我扫描所有游戏服务器时没发现这个FTP端口啊(8888)。仔细看了一下,原来这个端口连接延时十分长。所以扫描器没发现这个端口。
意外的从更新过程中,竟然Sniff到一个固定的更新程序的FTP帐户。检查了FTP服务器是ProFTPd,我没直接用这个帐户去溢出ProFtpd。因为这台服务器开了SSH,我直接拿帐户去登陆SSH,获得一个权限极低的shell。
就像一块布,一但撕开一丁点口子,只要稍一加力,整块布都会随之撕开!
在系统中寻觅了半天,终于寻找到一个有权限去写的tmp目录。查看了内核版本,用kernel do_brk()的问题溢出提升权限获得了rootshell,没去装rkt,因为只是帮忙测试.
检查了系统的路由表,发现有一个内网,最后确认是VPN,原来所有游戏服务器之间的连接是通过VPN,防火墙的信任检查,都是通过内网的IP地址。外网访问这些服务器都只能看到22端口和游戏服务程序端口。
在这台已控制的服务器上下载了一个nmap,扫描了其他服务器,发现其中一台开了Samba,查看了一下版本,存在问题。溢出并获得了rootshell。
到现在为止以控制两台服务器,我把两台服务器的shadow文件都弄回来,拿jonh跑了一遍,没什么弱智密码。看来密码还设得挺好的。
逛尤了一会,在开了Samba的服务器上,发现了游戏服务器程序。并随之在game.conf文件中发现了中央数据库的地址和一个数据库帐户。登上去看了一下,数据库太庞大,放弃了dump出来的念头。
好象没有必要去分析游戏服务器程序,找出vul,去exp,来撕开其他服务器,但从其中的一个名为"weihu"的table中,发现一个后台管理帐户和密码,这个密码大小写互换加数字加符号。
我在web网站上找到一个后台入口,并用在数据库得到的帐户登陆成功。发现后台管理系统中有一个上传的功能,而且没检查文件后缀名。存放文件目录也是在web目录之下。上传了一个phpshell,执行命令成功,随后我又获得提升权限为root的shell。
发现这台机器上还有个root在上面工作,但正在专注用vi编辑一个文件。没发现我。但我想到一个恶作剧。我给这台web网站服务器装了个能监视tty输入的sniff,随后又skill了那个root,那个root被踢下去没多久,又登陆上来。但我立马就抓到了他的密码。
我用这个抓到的密码去登陆其他服务器的SSH,并也用root帐户,都登陆成功。
感觉所有服务器的系统都应该是直接拷的盘,因为系统版本和所安装的程序和一些配置大都相同。
至此已经控制游戏服务器群的所有服务器,其中还有一台是SMS网关。
我们的游戏时间结束。只是因为一个小问题,最后导致整个服务器群被控制,其实这在安全问题上,这是必然会发生的。安全无小事!
其实这家企业对安全也有投入,硬件防火墙,支持VPN的。但因为一个程序自动更新的设计上的小失败。导致一切都虚设。
随后我把整个过程告诉了我那朋友,听得他立马向他们主管汇报了问题。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。