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

在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

  • 问题内容: 我有一个关于片段中上下文使用情况的问题。我的问题是,我总是收到NullpointerException。这是我的工作: 创建一个扩展SherlockFragment的类。在该类中,我有另一个Helper类的实例: 这是其他Helper类的摘录: 每次调用时(例如context.getResources()),我都会收到NullPointerException。这是为什么? 问题答案:

  • 问题内容: 我看过的shell脚本包括如下一行: 我知道这会导致执行的内容,但是意义何在? 后续问题:可以源任何脚本,还是仅源某些类型的脚本?脚本的来源(与正常执行相反)是否有除环境变量以外的其他副作用? 问题答案: 在脚本上运行命令会在当前进程的上下文中执行脚本。这意味着由脚本设置的环境变量在完成运行后仍然可用。这与正常运行脚本相反,在正常情况下,脚本退出后,新生成的进程中设置的环境变量将丢失。

  • 问题内容: 是否有评估为假的原因?还是只是成功时返回0的C约定起作用? 问题答案: 大多数更改容器就位返回值的Python方法- 命令-查询分离原理的应用。(Python总是很务实,所以一些变数在获取它时确实会返回一个可用的值,否则会很昂贵或一团糟-该方法是这种实用主义的一个很好的例子-但是这些绝对是例外,不是规则,并且没有理由append例外)。

  • 问题内容: 我对Java中的匿名类有什么误解。考虑以下简单示例: 演示 为什么要编译代码?在JLS,CHAPT 15 说: 匿名类始终是内部类(第8.1.3节);它永远不会是静态的 但是JLS,第8章 内部类是未显式或隐式声明为static的嵌套类。 因此,匿名类是内部类。但是我们在静态上下文中使用它们。为什么这里正确? 问题答案: 可以在静态上下文中创建类而无需将其声明为静态,这就是在这里发生的