假设我共享了主机,我想保护这个位置,不执行shell命令。我安装了suphp,以便用户可以单独执行PHP。我还做了一些其他的事情来保护服务器(basedir和php.ini中的其他推荐设置)。
但问题仍然存在:(我可以从其他网站执行和读取配置文件)
<?php echo exec('cat /var/www/website/config.php'); ?>如果禁用exec功能,还有其他方法可以从服务器中查找敏感信息。
我能做什么?我可以禁用针对特定用户的unix命令,这会生效吗?
发布于 2016-02-01 08:46:40
禁用exec和suexec,启用open_basedir,基本上遵循这个职位中的每个建议。
你提到了still there are other ways to...,如果你读了那篇文章,你还有问题或弱点,请在这里或者在服务器错误中发布
发布于 2017-09-17 18:40:16
在755之前,我更改了bin 754的预任务,现在用户无法使用PHP运行shell命令。
我觉得这是个有趣的解决方案。但是在这种情况下,安全规则的分离对于特定的用户来说是不方便的。
我想提出几个其他方法:
chroot的形式运行apache。但它需要复杂的配置。它允许为每个虚拟主机(执行用户)创建“隔离”执行空间。在我看来,这里描述了一个很好的例子:Apache + Chroot + FastCGI + PHPdisable_functions指令在php.ini中禁用潜在不安全的函数。这是比较简单和不安全的方式。例如:disable_functions=dl,system,exec,passthru,shell_exec,stream_select,popen,proc_open,proc_nice,ini_set在这里可以找到潜在的不安全函数:受安全模式限制/禁用的函数。
https://security.stackexchange.com/questions/112359
复制相似问题