1

问题是我used ps aux | grep apache说apache没有人运行。但后来我使用exec("whoami")了,它给出了不同的结果:root 或 gt。这取决于脚本的所有者。如果脚本由 拥有root,whoami 是root; 如果由 拥有gt,那么 whoami 是gt。我还检查了httpd.conf,apache用户是nobody,组是nobody。

那么有人能解释一下这件事吗?

谢谢!

4

1 回答 1

1

您正在使用 cgi 或 fast-cgi ,

要成为“nobody”,您需要使用 mod_php(php 作为 apache 模块)

http://php.net/manual/en/security.apache.php

当 PHP 用作 Apache 模块时,它会继承 Apache 的用户权限(通常是“nobody”用户的权限)。

http://www.php.net/manual/en/security.cgi-bin.attacks.php

对于出于某种原因不希望将 PHP 作为模块集成到服务器软件(如 Apache)或将使用 PHP 与不同类型的 CGI 包装器来创建安全的 chroot 和 setuid 环境的设置,使用 PHP 作为 CGI 二进制文件是一个选项脚本。

还有 SuPHP https://serverfault.com/questions/7589/how-do-you-run-a-php-script-as-the-owner

于 2012-09-19T15:50:36.883 回答