一尘不染

在PHP / Apache / Linux上下文中,为什么chmod 777确实是危险的?

php

我们所有人都被告知,将目录或文件留在基于Linux的Web托管上的权限级别777是一件坏事,并且总是根据需要设置尽可能少的权限。

我现在好奇的地方 正是 在于剥削的危险,特别是在一个PHP / Apache的环境。

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

那么该漏洞的确切位置在哪里777?是同一台计算机上的其他用户可以访问可写的文件吗?


阅读 317

收藏
2020-05-26

共1个答案

一尘不染

这是一种情况:

  1. 您拥有用户可以上传到的不受保护的目录。
  2. 他们上传了两个文件:一个shell脚本和一个其中system()调用了shell脚本的php文件。
  3. 他们通过访问浏览器中的URL来访问刚上传的php脚本,从而使shell脚本得以执行。

如果此目录为777,则意味着任何人(包括用户apache,即将执行php脚本的人)都可以执行它!如果未在该目录上设置执行位,并且未在该目录内的文件上设置执行位,则上述第3步将无效。

从注释中进行编辑:无关紧要的是PHP文件的权限,它是system()PHP文件中的调用,将由linux用户apache(或您设置为运行的apache的任何东西)作为linux系统调用执行。恰好在执行位很重要的地方。

2020-05-26