我在PHP和Apache2.4.1 mod_proxy_fcgi上遇到了麻烦。由于mod_proxy_fcgi不能处理Unix,PHP必须侦听本地主机。因此,任何访问服务器的人都可以向PHP发送请求。我无法将PHP限制在我的文档根上,所以有人可以创建一个恶意的PHP文件,确保我的PHP进程能够访问它,并将一个巧尽心思构建的请求发送到PHP侦听的端口。(我已经试过了,成功了。)
我的apache配置中有以下内容:
<VirtualHost *:80>
ServerName example.org
DocumentRoot /srv/vhosts/example.org/vhostdata/public/
<Directory /srv/vhosts/example.org/vhostdata/public/>
Require all granted
</Directory>
<LocationMatch ^(.*\.php)A0gt;
ProxyPass fcgi://127.0.0.1:6001/srv/vhosts/example.org/vhostdata/public/
ProxyErrorOverride On
</LocationMatch>
</VirtualHost>我如何使PHP在它接收到的每个请求上占据文档根/srv/vhosts/example.org/vhostdata/public/的优势?我已经在玩chdir指令了,但是它不适合我的需要。
不幸的是,对于我来说,使用chroot不是一种选择,因为我运行的是linux-vserver环境,管理员出于安全原因禁用了mknod。
发布于 2012-03-20 00:27:31
如果您想这样做,在chroot中运行实际上是您唯一的选择。
其他人真的有权限在您的机器上运行代码吗?如果是这样,我建议您切换到支持unix套接字的东西,mod_fastcgi将是一种选择。另一个选项(如果您的应用程序兼容)是切换到nginx,它支持PHP的unix套接字。
如果这只是担心安全性,我建议您只需收紧PHP/Apache运行的权限即可。如果可以防止恶意用户上载文件,则可以防止此漏洞的发生。
https://serverfault.com/questions/371311
复制相似问题