黑客(或其他)是否有可能将php文件上传/写入我的网站上有chmod 777的文件夹?
示例:
我有一个包含chmod 777的文件夹。 该文件夹包含图像。 我使用.htaccess阻止索引文件夹。
改革后的问题: 人们可以通过在他们的网站上使用PHP脚本将.php文件写入我的chmod 777文件夹吗?例如,列出该文件夹中的所有图像
(我熟悉正确的chmod用于上传文件夹等..,只是假设它是假设的)
答案 0 :(得分:16)
该机器的任何合法用户都可以将.php
个文件或他们想要的任何内容写入该开放目录,这是非常好的。 777
目录在共享主机上几乎没有位置。 (/tmp
有时可能是1777
,用于设置目录上的粘滞位 - 只允许文件所有者删除目录中的文件。通常,{777
1}}意味着任何人都可以从目录中删除任何文件。但是/tmp
肯定已经失去了对共享托管环境的支持,因为它本质上是不安全的。)
所以:你是这台机器上唯一的用户吗?或者这台机器是否与其他人共享?除了网络服务器,这台机器还运行其他任何服务吗如果是这样,那些其他服务也可能代表可能的攻击向量。
此外,如果您的目录上的权限设置为777
,我想知道您运行的PHP文件有多安全 - 我见过很多人运行不安全的PHP脚本,允许攻击者修改整个Web服务器上的每个HTML文件,以感染浏览该站点的人。 (是的。很多。很多都是屈指可数。)
这就是为什么您的网络服务器运行的用户帐户不应该拥有网站的任何文件 - 静态页面和动态页面。 Web服务器应该只具有足够的写权限来编写其access.log
,error.log
,并与数据库服务器通信。任何additional privileges beyond this都可以让您的某个脚本中的其他良性错误成为易受攻击的漏洞,使您的网站可以用来攻击他人。
777
是一个坏主意。修复它。确保您的Web服务器没有任何Web内容的写入权限。确保服务器上没有其他服务对您的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服务器本身被黑客入侵,则无法修改任何脚本和配置。
答案 1 :(得分:12)
有人可以(至少)三种方式写入您的目录:
PUT
HTTP方法只要您不以可写方式公开展示文件夹,任何人都无法远程修改文件夹的内容。这与本地权限无关。您设置的本地权限允许服务器的任何本地用户在此文件夹中进行读取,写入和执行 - 但这并不意味着远程攻击者可以。
话虽如此,请避免777
权限,除非绝对必要/安全。
答案 2 :(得分:7)
如果您的代码位于共享服务器或其上包含其他服务的服务器上,则其他本地用户可以写入您的目录(如果其他用户能够下载到父目录中)。
您需要的不仅仅是每个人都可读写的目录(777)。使用权限777通常表示对安全功能的理解很差(或者当代码需要重新分发时懒惰,并且作者不希望通过向脚本用户解释文件权限来使其变得太难)。