渗透国内某网络游戏服务器群记实

时间:2008-12-07   来源:   网友评论:0   人气: 275 作者:

一个好友在国内某网络游戏企业工作,让我帮忙测试他们游戏服务器群的安全性。加上我这段时间闲得无聊,也就答应了。
  
  我先下载了游戏客户端程序,得到到了几个游戏服务器的地址

游戏帐号在WEB网站上也可以注册,看来游戏中央数据库的调用WEB网站也可以。
  
  先仔细的检查了一下WEB网站,大部分是PHP+MYSQL的。代码写得还不错,几乎找不到什么突破口。再看看MYSQL,禁止远程连接。查看了其他游戏服务器,都是LINUX系统,都只是开了OPENSSH和游戏服务器程序端口。只有WEB网站多个80,而又没什么可利用的地方。
  
  看上去安全做得不错,但这是种幻象!
  
  随后仔细分析了下游戏客户端程序,我打开Sniffer Pro以便记录下客户端程序和服务器的所有通信。发现客户端程序有个自动更新功能,我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的。但因为一个程序自动更新的设计上的小失败。导致一切都虚设。


 

文章评论