黑客(或其他)是否可以上传/写入php文件到我的网站上有chmod 777的文件夹?
的例子:
我有一个文件夹chmod 777。该文件夹包含图像。我使用。htaccess来阻塞索引文件夹。
改革问题:人们可以写一个。PHP文件到我的文件夹有chmod 777使用PHP脚本在他们的网站?例如,要列出该文件夹
中的所有图像(我熟悉正确的chmod上传文件夹等。(只是假设地问)
很有可能该机器的任何合法用户都可以将.php
文件或他们想要的任何其他文件写入该大打开的目录。777
目录在共享主机上几乎没有位置。(/tmp
有时可能是1777
,设置目录上的粘着位——只允许文件所有者删除目录中的文件。通常,777
意味着任何人都可以从目录中删除任何文件。但是/tmp
在共享主机环境中已经不再受欢迎了,因为它本身就不安全。
So:你是机器上唯一的用户吗?还是说这台机器和别人共用?除了web服务器,这台机器还运行其他服务吗?如果是这样,这些其他服务也可能代表一个可能的攻击向量。
此外,如果你的权限设置为777
在你的目录上,我想知道你运行的PHP文件是多么安全——我看到很多人运行不安全的PHP脚本,允许攻击者修改整个web服务器上的每个HTML文件,感染浏览网站的人。(是的。很多。)
这就是为什么无论您的web服务器以哪个用户帐户运行,都不应该拥有网站的任何文件——无论是静态页面还是动态页面。web服务器应该只有足够的写权限来写它的access.log
和error.log
,并与数据库服务器通信。任何超出此权限的额外权限都很容易使脚本中的良性错误变成可利用的漏洞,从而使您的站点被用来攻击其他人。
777
是个坏主意。解决这个问题。确保您的web服务器没有对任何web内容的写权限。确保服务器上没有其他服务对你的网页内容有写权限。确保服务器上没有其他用户对你的网页内容有写权限。
这比听起来容易。创建新的webcontent
用户。如果你的web服务器已经有了自己的一组,让我们使用它,并称之为webgroup
。如果还没有,也创建一个新的webgroup
。(adduser(8)
和addgroup(8)
,如果你的VPS没有自己的机制。)然后为你所有的网页内容设置所有者:
chown -R webcontent:webgroup /path/to/web/content
修复权限:
find /path/to/web/content -type d -print0 | xargs -0 chmod 750
find /path/to/web/content -type f -print0 | xargs -0 chmod 640
然后确保你的web服务器正在使用Group webgroup
指令,以确保它仍然可以读取所有它需要的文件。
这将使您的web服务器有读取访问您的所有脚本和配置,但如果web服务器本身被黑客攻击,它无法修改任何内容。
有人可以(至少)有三种方式向您的目录写入:
- 如果他们对服务器有本地控制(例如通过终端) 如果你的web服务器支持并允许
- 如果你有一个脚本,允许人们上传文件到该目录
PUT
HTTP方法只要你不以可写的方式公开文件夹,没有人可以远程修改文件夹的内容。这与本地权限无关。您所设置的本地权限允许服务器的任何本地用户在此文件夹中读取,写入和执行-但这并不意味着远程攻击者可以。
话虽如此,避免777
权限,除非绝对必要/安全。
如果你的代码是在一个共享的服务器上,或者一个服务器上有其他服务,这是可能的,其他本地用户写到你的目录(如果其他用户能够下降到父目录)。
你需要的不仅仅是一个目录,这是可读的和可写的每个人(777)被黑客攻击。使用权限777通常表明对安全特性的理解很差(或者当代码需要重新分发时,作者不想通过向脚本用户解释文件权限使其变得太困难)。