人们可以写一个.php文件到我的chmod 777文件夹吗?

15

黑客(或其他人)是否能够将一个php文件上传/写入到我网站上的一个chmod为777的文件夹中?

例如:

我有一个chmod为777的文件夹,里面包含图片。 我使用.htaccess文件阻止该文件夹的索引。

改写后的问题是: 是否有可能通过在其网站上使用PHP脚本来向我的chmod为777的文件夹中写入.php文件?例如,列出该文件夹中的所有图片

(我熟悉上传文件夹的正确chmod设置等,只是假设性地提问。)


标签 - SLaks
啊哈,不知道有那个“修订工具”,谢谢! :) - Sam Vloeberghs
3个回答

16
很有可能机器上的任何合法用户都可以在那个完全开放的目录中编写.php文件或其他任何想要的文件。在共享主机上,一个777目录几乎没有任何用处。(/tmp有时可能是1777,以设置目录上的粘性位,这只允许文件所有者删除目录中的文件。通常,777表示任何人都可以从目录中删除任何文件。但是,在共享托管环境中,/tmp已经不安全了。)
所以:你是机器上唯一的用户吗?还是与其他人共享?除Web服务器外,该机器是否运行任何其他服务?如果是,则这些其他服务也可能代表潜在的攻击向量。
此外,如果您的目录权限设置为777,我想知道您运行的PHP文件到底有多安全——我见过很多情况,人们运行不安全的PHP脚本,允许攻击者修改整个Web服务器上的每个HTML文件,以感染浏览该站点的人。(是的。很多。比很多还多。)
这就是为什么Web服务器运行的任何用户帐户都不应拥有网站文件(静态页面和动态页面)。Web服务器应该只有足够的写权限,以写入其access.logerror.log和与数据库服务器通信。任何额外权限都会使一个原本良性的脚本中的漏洞变得容易被利用,从而允许您的网站被用于攻击他人。 777是个坏主意。解决它。确保您的Web服务器无权写入任何Web内容。确保服务器上没有其他服务对您的Web内容具有写权限。确保服务器上没有其他用户对您的Web内容具有写权限。 更新 这比听起来要简单。创建一个新的webcontent用户。如果您的Web服务器已经拥有自己的组,请使用它并称其为webgroup。如果还没有,请创建一个新的webgroup。(如果您的VPS没有自己的机制,则使用adduser(8)addgroup(8)。)然后将所有Web内容的所有者设置为:
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服务器本身被黑客攻击,则无法修改其中任何内容。


假设我在一台VPS上。因此,我是(虚拟)机器上唯一的用户。 - Sam Vloeberghs
网页服务器是VPS上唯一的服务吗?你对自己的脚本有多少信任? - sarnold
我是否正确地理解了你的最后一段话并不像听起来那么简单? - Sam Vloeberghs
如果您所说的Web服务器是指PHP、FTP、MySQL等,则是的。 我对我的脚本非常信任。只有已登录的用户才能上传,而且在获得批准之前会进行身份验证和检查。 - Sam Vloeberghs
请包含Apache标准chmod配置,以便+1。 - Rushyo
显示剩余3条评论

12

有(至少)三种方法可以写入您的目录:

  • 如果他们可以本地控制服务器(例如通过终端)
  • 如果您的Web服务器支持并允许PUT HTTP方法
  • 如果您有一个允许人们上传文件到该目录的脚本

只要您不以可写的方式公开暴露目录,没有人可以远程修改目录的内容。这与本地权限无关。您设置的本地权限允许服务器的任何本地用户在此文件夹中读取、写入和执行 - 但这并不意味着远程攻击者可以这样做。

话虽如此,请避免使用777权限,除非绝对必要/安全。


只要您不将文件夹以可写方式公开暴露,就没有人可以远程修改文件夹的内容。 - Sam Vloeberghs

7
如果您的代码部署在共享服务器或者其他服务所在的服务器上,其他本地用户可以写入您的目录(如果这些用户可以进入父目录)。仅有一个对于每个人可读可写的目录(777)是不足以防止被黑客攻击的。使用权限777通常表明对安全特性的理解非常差(或者在需要重新分发代码时作者懒得向脚本使用者解释文件权限)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接