【发布时间】:2012-06-30 05:06:44
【问题描述】:
我经常读一些类似
的文章chmod 777 不好!
我想知道:
当我对文件执行chmod 777 时,我如何变得容易受到攻击?
我可以重现的真实世界示例是什么?
【问题讨论】:
我经常读一些类似
的文章chmod 777 不好!
我想知道:
当我对文件执行chmod 777 时,我如何变得容易受到攻击?
我可以重现的真实世界示例是什么?
【问题讨论】:
它允许任何人查看和/或修改文件系统内容:假设攻击者已经拥有通用系统访问权限,这在共享主机平台上很常见......从一开始就比其他人更“硬化”。以下是可能的攻击媒介的小不完整列表:
在上面我还假设“组”包括网络服务器主体,并且涉及网络服务器(和/或共享主机),可用作主要攻击向量和/或安全漏洞。但是,我再次强调这一点:上面的列表并不完整。
虽然不能“保证安全”,但使用最具体的权限可以减轻一些漏洞/暴露。
【讨论】:
如果攻击者只能访问 Web 界面(不能访问文件,例如,通过同一共享主机上的另一个帐户),则模式 777 不会直接打开任何漏洞。它的作用是让攻击者在以其他方式进入网站后更容易更改网站上的内容。
例如,假设您有一个 WordPress 站点,并且某处存在漏洞,允许攻击者在服务器守护进程的凭据下执行任意 PHP 代码(这种情况在过去已经发生过很多次,并且毫无疑问会在未来)。 WordPress 本身的代码存储在服务器守护程序可以读取的.php 文件中。如果这些文件是 777 模式,那么攻击者可以向它们写入 - 这意味着他们可以修改代码 - 更改您的站点的功能。也许他们安装了“利用漏洞驱动”工具包,现在访问您网站的每个人的浏览器都会被黑客入侵。也许他们安装了一个 SEO 垃圾邮件工具包,现在 Google 认为您在销售伟哥(但如果您直接访问该网站,它是不可见的 - 是的,这确实发生了)。
如果.php 文件的模式为 755,并且由不是服务器守护程序的用户拥有,则攻击者无法永久更改站点的功能。
请注意,这意味着 WordPress 的从管理面板自我升级功能是有风险的,因为它只有在 WordPress 可以修改自身的情况下才有效——你不能拥有它,而且对手也无法修改文件一次他们可以执行任意 PHP。
另请注意,如果服务器守护程序可以修改 no 文件和 no 目录,则在这方面您只有 100% 安全。即使只允许文件上传到单个目录仍然可能是一个问题——即使你让任何人放在那里的唯一东西是图像文件。 (如果这似乎不可能,请查看http://lcamtuf.coredump.cx/squirrel/。)
【讨论】:
chmod 命令中的每个数字代表一个八进制(3 位)数字。三位数字,总共是 9 位。每个位代表一个权限; 1 == 有权限,0 == 没有权限。
每个数字的三位代表读(二进制 100 == 十进制 4)、写(二进制 010 == 十进制 2)和执行(二进制 001 == 十进制 1)。十进制7为读+写+执行权限。
chmod 命令的第一个数字代表文件或目录所有者的权限。第二个是针对小组的。第三个是“宇宙”——也就是其他所有人。
所以,chmod 777 代表您、组和每个人的读取、写入和执行权限。这通常比所需的访问权限大得多。
对于您的真实示例,想象一下如果名为 my_bank_account_credentials 的文件被更改为 chmod 777。不是很安全!恶意用户可能会更改其中的内容,或者只是阅读并愉快地拿走您的钱。
对于服务器,主要危险是服务器代码中的一个被利用的错误可能允许攻击者访问服务器进程有权访问的任何内容,其中包括具有777 权限集的任何内容。
【讨论】:
chmod 是更改模式命令。 777 表示权限。可以拥有权限的人分为三组(每个人都有自己的数字),依次为:所有者(文件或目录的前 7 个),组(与所有者属于同一组的每个人,第二个 7 ) 和世界(第三名 7)。
所有者是文件的用户 - 就是您。在 *nix 世界中,用户属于组。因此,您可能是组营销中的用户/所有者 Bob。这个模型可以让你做一些事情,比如说 Bob 可以读/写文件,其余的营销人员只能读取文件,而其他用户可以读取文件。
777 中的每个数字都是以下的二进制表示: rwx(读/写/执行)。所以 755 的 chmod 意味着: 111(7) - 所有者可以读写执行 101(5) - 组中的其他人可以执行或读取,不能写入 101(5) - 世界其他地方可以读取和执行,不能写入。
该设置意味着您可以读取/写入和执行文件,但访问您网站的人只能读取或执行文件。因此你需要将你的cgi-bin中的程序设置为755,这样人们就可以将文件作为程序来执行。
如果您将权限设置为“chmod 644”,您将获得一个可以由您写入但只能由世界其他地方读取的文件。这对于直接的 HTML 文件很有用,这样就不会出现手帕。但是尝试执行权限为 644 的文件会报错。
CHMOD 777 将允许每个人对您服务器的文件进行更改,它会给他们 WRITE 条件,每个人都知道这是不好的。
【讨论】:
如果恶意条目到达您的应用、网站等。无论它对代码做了什么。关键点在数据库上,没有可能的保护措施来防止“写入”它。所以 chmod 777 权限一点也不危险。
【讨论】: