其实早就有写这个文章的想法,一直没有写的原因是因为恐怕这无形为一些乐于此道的人提供了一种方法,但想想说了也许就能多少对一些IDC们起一定的压力,加强一些安全方面的措施,不然的话苦的是那些广大的虚拟主机用户,哪天被黑了,都傻傻的不知道怎么回事,当然,在我写出这个来的时候,我也是已经确定我所提及的大部分问题都已得到解决,下列所述的IP、域名、用户名、密码、路径、文件名等等都已被我更换,不是实际的,而且是合并了2个以上服务商的问题,凑成一起说,各位看官无需将我所述影射到国内的任何一个虚拟主机服务商身上。
事情发生在半年以前,那时候20CN还没有成立,因为某些原因,我想要干掉一个网站,(没错,确实就是这样,别把俺想得太高尚),首先当然是找个扫描器扫一下端口,发现这是一部很标准的UNIX主机,开着telnet,ftp,smtp,pop等,开着这么多的端口,似乎很好搞,当时这么想,谁知道仔细一看,各个服务程序的版本都没有什么中级以上漏洞,不仅没有远程的溢出,连本地的都似乎没有,只好试试看有没有CGI方面的漏洞,一扫下来,也是几乎没有什么可以利用的,就在他网站上四处看看,发现有个一会员注册的程序,为了得到目标的进一步资料,我就注册一下了,结果收到一份邮件,发现发件人为 ab1234@abc.com,但这个网站的域名确是def.com,奇怪,照这个看来,这个好像是虚拟主机,在IE上打入 IP202.96.100.10看看,结果出来的是XXX公司xxx虚拟主机什么什么#*#%@!%^&#*#@乱七八遭一广告,没错了,这是个虚拟主机。而他在这个主机上的用户名是ab1234,得到了用户名,首先进行ftp的简单穷举,没用,看来密码还是设得比较好,既然你的破不了,那么破了别人的和你的距离也就再接近了一点了,所以看看别人的如何,于是从用户 ab1200--ab1300一个一个来,很快,ab1210的密码出来了很简单的8888,我理所当然的用user:ab1210 pass:8888 telnet 了进去,但我要干掉的是ab1234的而不是ab1210的,所以就去ab1234的目录
%cd
%cd home
%ls
一堆用户目录
%cd ab1234
:Permission denied
没错,这正常,进不了其他用户的目录,但是没关系,既然进来了,干掉他的机会就有80%了,现在先到处看看再说,结果发现了这部主机运行了3个独立的apache,一个在80端口、一个在91端口、还有一个在92,80的不用说,但91、92这些又是干什么的呢?看看再说,在IE上输入http://202.96.100.10:91/ 出来要一个身份验证的对话框,好,那就输入刚刚的ab1210 ,8888,进去了原来这是个用户管理界面,可以在这里设置邮件,改密码什么的,既然用web可以做这些事,那这个apache似乎不可能是nobody身份运行了,找到他的httpd.conf一看,天~~~~~~,user root ,这就意味着,如果这个apache 的cgi-bin目录下的任何一个文件对其他人可写,我就可以是root,只不过不是控制台上的root而已,我必须修改那个可写的文件的内容,让他变成是我的命令,然后通过浏览器用apache来运行他。于是
%cd /var/www/manager/cgi-bin
%ls
:Permission denied
呀呀,进得来却不能读
%cd ..
%ls
:Permission denied
混蛋
$cd ..
%ls
%htdocs cgi-bin backup manager
嘿嘿,backup,备份,一般来说,管理员备份的时候一般都为了省事没有设定权限,看看能不能进
%cd backup
%
可以
%ls -la
drwxr-xr-x 7 root wheel 512 Jul 20 07:02 .
drwxr-xr-x 4 root wheel 512 Jul 3 01:49 ..
......
-rw-r--r-- 1 root wheel 25642628 Jul 3 01:49 manager_00_05_12.tar
......