php - 在 PHP/Apache/Linux 环境中,为什么 chmod 777 是危险的?

this question 中讨论的启发.

我们都被告知,将目录或文件保留在具有 777 权限级别的基于 Linux 的 Web 主机上是一件坏事,并且始终设置尽可能少的权限。

我现在很好奇究竟在哪里存在被利用的危险,特别是在 PHP/Apache 上下文中。

毕竟,无论是否标记为“可执行”,PHP 脚本文件都可以从外部执行(即通过调用 Web 服务器,然后调用解释器),不是吗?这同样适用于通过命令行 php 解释器调用的文件,对吧?

那么 777 的漏洞究竟在哪里?是不是同一台机器上的其他用户可以访问全世界可写的文件?

最佳答案

这是一个场景:

  1. 您有一个用户可以上传到的不 protected 目录。
  2. 他们上传两个文件:一个 shell 脚本,一个 php 文件,其中包含对 shell 脚本的 system() 调用。
  3. 他们通过访问浏览器中的 url 来访问刚刚上传的 php 脚本,从而导致 shell 脚本执行。

如果这个目录是777,这意味着任何人(包括用户apache,这是php脚本将执行的)都可以执行它!如果没有在该目录上设置执行位,并且可能是目录中的文件,那么上面的步骤 3 将不会执行任何操作。

从评论中编辑:重要的不是 PHP 文件的权限,而是 PHP 文件中的 system() 调用将由 linux 用户 apache(或无论您将 apache 设置为如何运行),这正是执行位重要的地方。

https://stackoverflow.com/questions/2338641/

相关文章:

linux - 如何从 linux 命令行获取视频文件的分辨率(宽度和高度)?

linux - 在 Unix 上计算每行/字段的字符出现次数

linux - 如何使用 sed 提取子字符串

c++ - 如何在 GDB 中漂亮地打印 STL 容器?

linux - 远程 Linux 服务器到远程 linux 服务器目录复制。如何?

python - standard_init_linux.go :178: exec user pr

linux - 如何获得linux中两个文件之间的差异(仅添加)

linux - 如何将一个文本文件拆分为多个 *.txt 文件?

linux - 在 mac 上通过 ssh 连接到 amazon aws linux 服务器

linux - 用户数据脚本未在我的自定义 AMI 上运行,但在标准 Amazon linux 中运