受 this question 中讨论的启发.
我们都被告知,将目录或文件保留在具有 777
权限级别的基于 Linux 的 Web 主机上是一件坏事,并且始终设置尽可能少的权限。
我现在很好奇究竟在哪里存在被利用的危险,特别是在 PHP/Apache 上下文中。
毕竟,无论是否标记为“可执行”,PHP 脚本文件都可以从外部执行(即通过调用 Web 服务器,然后调用解释器),不是吗?这同样适用于通过命令行 php
解释器调用的文件,对吧?
那么 777
的漏洞究竟在哪里?是不是同一台机器上的其他用户可以访问全世界可写的文件?
最佳答案
这是一个场景:
- 您有一个用户可以上传到的不 protected 目录。
- 他们上传两个文件:一个 shell 脚本,一个 php 文件,其中包含对 shell 脚本的
system()
调用。 - 他们通过访问浏览器中的 url 来访问刚刚上传的 php 脚本,从而导致 shell 脚本执行。
如果这个目录是777,这意味着任何人(包括用户apache,这是php脚本将执行的)都可以执行它!如果没有在该目录上设置执行位,并且可能是目录中的文件,那么上面的步骤 3 将不会执行任何操作。
从评论中编辑:重要的不是 PHP 文件的权限,而是 PHP 文件中的 system()
调用将由 linux 用户 apache(或无论您将 apache 设置为如何运行),这正是执行位重要的地方。
关于php - 在 PHP/Apache/Linux 环境中,为什么 chmod 777 是危险的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338641/