当前位置: 首页 > 面试题库 >

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

闾丘玺
2023-03-14
问题内容

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

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

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

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


问题答案:

这是一种情况:

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

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

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



 类似资料:
  • 问题内容: 我们所有人都被告知,将目录或文件留在基于Linux的Web托管上的权限级别是一件坏事,并且总是根据需要设置尽可能少的权限。 我现在好奇的地方 正是 在于剥削的危险,特别是在一个PHP / Apache的环境。 毕竟,无论是否标记为“可执行文件”,都可以从外部执行PHP脚本文件(即,通过调用Web服务器,然后调用解释器),不是吗?同样适用于通过命令行解释器调用的文件,对吗? 那么该漏洞的

  • 问题内容: 为什么这么危险? 为什么建议改为使用? 我知道已弃用。还有什么使它不安全的? 有什么地方可以使用方法吗?如果是这样,请举一个例子。 问题答案: 为什么Thread.stop()如此危险? 此处详细描述了这些问题:http : //download.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveD

  • 问题内容: 此问题与偶尔获取SqlException:超时expired有关。实际上,我在我的应用程序中使用率很高。但是用户Remus Rusanu说您不应该使用此功能。为什么我不应该使用它以及它包括什么危险。所以,如果我有 如何重写此语句以使其起作用? 问题答案: 使用合并 您的SQL失败,因为2个并发的重叠调用和非常接近的调用都将在INSERT发生之前从EXISTS中获得“ false”。因此

  • 问题内容: 我试图理解在“流文档”中发现的警告。我已经习惯了使用forEach()作为通用迭代器。这导致我编写这种类型的代码: 这是一个简单的例子。我了解该代码违反了Oracle关于有状态lamda和副作用的警告。但是我不明白为什么这个警告存在。 运行此代码时,它似乎表现出预期的效果。那么,我如何打破这一点来说明为什么这是一个坏主意? 在某种程度上,我读到以下内容: 如果并行执行,则ArrayLi

  • 问题内容: GoogleJavaScript样式指南建议不要扩展。但是,我用它来在不存在的浏览器中使用它(以及类似方法)。 我知道一些问题,但不是哈希表。 扩展时可能会出现什么问题,使Google对此提出建议? 问题答案: 大多数人都错过了这一点。我认为,例如填充或填充标准功能,使其在较旧的浏览器中运行,是一个好主意。不要听那些讨厌的人。Mozilla甚至向您展示了如何在MDN上执行此操作。通常,

  • 我解释了我的问题,我有一个顶点,我定义了所有的路线。我有简单的java类,其中包含我根据路由在顶点中调用的方法。例如,我的下载文件()方法在 MyFile 类中,如下所示: 我在我的垂直类中这样使用这个类: 我的同事告诉我,在顶点中实例化一个类是不好的,当我问他为什么时,他回答说它变得有状态,我怀疑他对我说的话,因为我不知道该怎么做。当我在顶点中声明 MyFile 类实例为“静态 final”时,