容器技术交流

 找回密码
 立即注册
查看: 3753|回复: 9

关于Famp的一个重要安全问题!!!

[复制链接]
发表于 2009-5-4 01:43:13 | 显示全部楼层 |阅读模式
既然famp管理系统是针对虚拟主机开发的,那么就必须严格设置php在每个虚拟主机下的读取目录。我看了一下,famp的虚拟主机配置文件是保存在vhost.conf中(见下图),很明显,虚拟主机配置文件里没有对php操作目录的限制!


    000.JPG


   看下面一个简单的测试,我用来测试的是angel的phpspy2008,随便上传到任意一个虚拟主机目录中,访问并切换到默认的ftp目录/usr/home/ftp,怎么样,所有的虚拟主机都列出来了吧(见下图),并可以点击这些虚拟主机目录访问任何一个虚拟主机的目录!!!还可以读取这些虚拟主机目录中的源码!也就是可以跨站读取!可以想一下 ,我是服务器的管理员,通过famp开通了很多虚拟主机,这些虚拟主机用户如果有“捣乱”的话,随便上传一个木马,便可读取其他站点的源码了,如果有幸找到源码里的mysql用户名密码,再在空间里编写个php就可以操作他人的数据库了,如果找到的是mysql的root账号密码,而famp的虚拟主机配置又是保存在mysql表里,整个虚拟主机不是就可以控制了么?

111.jpg



222.JPG


通过木马操作Mysql的famp表(假若获得了root密码)

server2.gif




      据我所知,目前网络上的成熟的unix系列虚拟主机是没有这个问题的,他们一般是通过在虚拟主机配置文件里配置php_admin_value open_basedir来实现的,所以强烈建议famp里也设置改选项,使得每个虚拟主机里的php只可以操作该虚拟主机里的文件。

      对于Nginx我查找资料和网上,都没找到限制虚拟主机目录权限的方法,目前看来好似只能通过php.ini里设置open_basedir,见:http://www.xpb.cn/blog/665.html ,这可能也是目前虚拟主机提供商很少采用nginx的原因之一吧。不知道老大有没有限制方法。

[ 本帖最后由 海天旭日 于 2009-5-4 08:44 编辑 ]
发表于 2009-5-4 02:56:35 | 显示全部楼层
很大的一个安全隐患啊
发表于 2009-5-4 07:27:38 | 显示全部楼层
我在使用FTP客户端软件登录过程中,没有发现这个问题,没有发现能切换到/home/ftp目录中,我登录后,就自动锁定在空间根目录中。

但是,不知道对于PHP木马,有没有好的防范作用。这个问题没有测试。
发表于 2009-5-4 07:33:28 | 显示全部楼层
我测试了,问题确定存在。并且还不小。

最新PHP木马.rar (28.62 KB, 下载次数: 3118)

这是我使用的最新的PHP木马。请老大测试一下。

[ 本帖最后由 zhxedu 于 2009-5-4 07:35 编辑 ]
发表于 2009-5-4 07:39:31 | 显示全部楼层
因为默认是使用Nginx,我切换到apache后,也存在这个问题,看来,这个问题很严重的,如果不做好目录权限,那么,是谁也不敢用的,我知道早期的windows下的虚拟主机管理系统都存在着这个问题,他们经过修改后,都解决了这个问题。

老大一出手,这个问题肯定能解决的,请放心吧。
 楼主| 发表于 2009-5-4 08:39:57 | 显示全部楼层
另外 ,建议在php.ini中默认禁用一些系统方面的函数,防止探测主机信息,现在的可以执行一些命令查看主机信息,例如:

server.gif
发表于 2009-5-4 08:56:36 | 显示全部楼层
嗯,起床了,呵
谢谢你的提的这些问题
这些方面,我早考虑到了,如果是开给别人用,我会写些教程的,今天会写完(这段时间太累了,还有很多帮助知识)
为什么不直接安装好就把安全方面配置好呢,因为考虑兼容性问题,还有以后升级PHP的问题(它们的php.ini文件不一样,不一定能通用),以后争取在后台实现更改php.ini吧!
我们用echo `ls ../`就可以把虚虚拟主机列出来,不必要那么麻烦,呵
改改php.ini能解决这些问题
vhost.conf的权限为600,属主为famp,而前台运行php的用户为ngbody,所以,vhost.conf中的famp数据库密码和config.php中的数据库密码,普通的虚拟主机用户是没法读的
更别说root的用户密码了
,呵
发表于 2009-5-4 09:00:56 | 显示全部楼层
还有,建议虚拟主机的用户把所有文件的权限改为700(也可以是770,后面一个是0就行了),也可以解决这个问题,因为别的虚拟主机的用户id和用户组id是不一样的,只能看到目录名,而不能列出文件
当然,如果虚拟主机的用户不听话,我也没办法了,但对系统是不会造成伤害的,只会伤害那个不听话的用户,呵
发表于 2009-5-4 10:37:13 | 显示全部楼层
为什么不能像FTP客户端那样,用户只是锁定在自己的网站空间中,不允许跨目录列出其它的目录,虽然不能造成危害,但是,系统的相关信息,系统根目录中的相关的信息,都是能够被下载到本地。

[ 本帖最后由 zhxedu 于 2009-5-4 11:17 编辑 ]
发表于 2009-5-4 12:13:13 | 显示全部楼层
原帖由 zhxedu 于 2009-5-4 10:37 发表
为什么不能像FTP客户端那样,用户只是锁定在自己的网站空间中,不允许跨目录列出其它的目录,虽然不能造成危害,但是,系统的相关信息,系统根目录中的相关的信息,都是能够被下载到本地。
那只能用apache了
方法:在后台加主机的时候,在apache Rewrite中添加限制就行了:php_admin_value open_basedir "/home/ftp/FTP用户名/:/tmp/:/var/tmp/"
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|URLOS ( 粤ICP备18087780号 )

GMT+8, 2024-4-30 04:23 , Processed in 0.058675 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表