为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕的地10843 2019-11-29 14:19:02
受此问题讨论的启发,这可能是一个愚蠢的问题。我们所有人都被告知,将目录或文件留在基于Linux的Web托管上的权限级别777是一件坏事,并且总是根据需要设置尽可能少的权限。我现在好奇的地方正是在于剥削的危险,特别是在一个PHP / Apache的环境。毕竟,无论是否标记为“可执行文件”,都可以从外部执行PHP脚本文件(即,通过调用Web服务器,然后调用解释器),不是吗?同样适用于通过命令行php解释器调用的文件,对吗?那么该漏洞的确切位置在哪里777?是同一台计算机上的其他用户可以访问可写的文件吗?
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

这是一种情况:

  1. 您拥有用户可以上传到的不受保护的目录。

  2. 他们上传了两个文件:一个shell脚本和一个其中system()调用了shell脚本的php文件。

  3. 他们通过访问浏览器中的URL来访问刚上传的php脚本,从而使shell脚本得以执行。

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

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


查看完整回答
反对 回复 2019-11-29
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

这大大增加了您的网站针对恶意活动的漏洞配置文件,因为只需要闯入一个帐户即可。

任何通过任何登录名即可访问系统的人都可以对您的页面执行任何操作,包括将其更改为“此网站确实不安全,请给我您的信用卡信息”。

编辑:(以澄清和解决评论)

许多服务器在生活中具有多个目的。他们运行多种服务。如果通过为每个服务分配一个唯一的用户并相应地管理文件权限来仔细地将这些服务彼此隔离,是的,如果有人破坏了帐户的凭据,您仍然处于困境中,但是它们所造成的损害仅限于该服务。如果您只有一个通用帐户并将整个文件系统设置为777,则一个受到破坏的帐户会危害计算机上的所有内容。

如果您的服务器专用于仅运行Apache / PHP,并且在生活中没有其他用途,并且只有一个帐户正在运行Apache / PHP,则破坏一个帐户与使整个计算机不受破坏一样好。从您的应用程序的角度来看(尽管您仍然应该使用运行PHP的帐户来保护和禁止写系统文件,但是对于管理员帐户/ root用户仍然应该可以使用)。

如果他们可以编写文件并且可以执行,则可以将其更改为在您的计算机上执行的文件(可执行文件或脚本),然后使用PHP的shell_exec运行该可执行文件。如果您配置为不允许shell_exec,则他们也可以更改您的配置


查看完整回答
反对 回复 2019-11-29
?
largeQ

TA贡献2039条经验 获得超7个赞

在权限方面遵循极简主义有很多很好的一般原因,但是在LAMP虚拟主机的情况下,容易想到的是

  • 在共享主机平台上,共享您的主机的其他用户现在可以读取和写入您的脚本。

  • 在专用主机上,流氓进程可以读取/写入并意外删除您的文件。假设有一个自定义日志记录进程在后台运行,但用户nobody的错误导致尝试这样做rm -rf /。现在通常这将是无害的,因为几乎不会有任何文件没有人具有写许可权,但是此流氓过程现在会将文件随身携带。

  • 要破坏您的网站,某人只需以任何用户的身份获得访问权限,甚至可以说一个nobody或类似的虚拟帐户。通常,攻击者必须进行进一步的用户级别升级攻击,才能到达可能造成一定损害的地方。这是一个真正的威胁。某些非关键服务可能正在虚拟帐户下运行,并且可能包含漏洞。


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 930 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信