29

我经常读一些文章说类似的东西

chmod 777 不好!

我在想:

在文件上执行时如何变得容易受到攻击chmod 777

我可以重现的真实世界示例是什么?

4

5 回答 5

23

允许任何人查看和/或修改文件系统内容:假设攻击者已经拥有通用系统访问权限,这在共享托管平台上很常见..有些从一开始就比其他人更“强化”。以下是可能的攻击媒介的一小部分不完整列表:

  1. “您的安全代码”可能会被在同一Web 服务器上下文中运行的“他们的恶意代码”覆盖......可能会窃取密码/木马、暴露数据库、删除内容等。也就是说,其他人的代码可以在您的安全下运行上下文
  2. 内容(例如“脚本源”)可能会在网络服务器(或所有者)上下文之外查看。有连接数据库的“安全”密码吗?嗯,不再...
  3. 如果内容受权限保护(例如,网络服务器以前无法访问),网络服务器可能能够访问/列出敏感信息……如果您不想共享它,那就不好了。不同的网络服务器配置也会以不同的方式处理“列表”,这也可能会暴露超出预期的内容。

在上面我还假设“组”包括网络服务器主体,并且涉及网络服务器(和/或共享主机),可用作主要攻击向量和/或安全漏洞。但是,我再次强调这一点:上面的列表并不完整

虽然不能“保证安全”,但使用最具体的权限可以减轻一些漏洞/暴露。

于 2012-06-30T05:14:53.333 回答
2

如果攻击者只能访问 Web 界面(不能访问文件,例如,通过同一共享主机上的另一个帐户),则模式 777 不会直接打开任何漏洞。它的作用是让攻击者在以其他方式进入网站后更容易更改网站上的内容。

例如,假设您有一个 WordPress 站点,并且某个地方存在一个错误,允许攻击者在服务器守护程序的凭据下执行任意 PHP 代码(这在过去已经发生过很多次,并且毫无疑问将来会再次发生)。WordPress 本身的代码存储在.php服务器守护程序可以读取的文件中。如果这些文件是 777 模式,那么攻击者可以向它们写入 - 这意味着他们可以修改代码 - 更改您的站点的功能。也许他们安装了“利用漏洞驱动”工具包,现在访问您网站的每个人的浏览器都会被黑客入侵。也许他们安装了一个 SEO 垃圾邮件工具包,现在谷歌认为你在卖伟哥(但如果你直接访问该网站,它是不可见的——是的,这确实发生了)。

如果.php文件是模式 755,并且由不是服务器守护进程的用户拥有,那么攻击者就无法永久更改站点的功能。

请注意,这意味着 WordPress 的从管理面板自我升级功能是有风险的,因为它只有在 WordPress 可以修改自己的情况下才有效——你不能拥有它,而且对手一旦可以执行就无法修改文件任意 PHP。

另请注意,如果服务器守护程序没有文件和目录可以修改,那么在这方面您只有 100% 安全。即使只允许文件上传到单个目录仍然可能是一个问题——即使你让任何人放在那里的唯一东西是图像文件。(如果这似乎不可能,请查看http: //lcamt​​uf.coredump.cx/squirrel/。)

于 2016-08-19T16:20:17.300 回答
1

命令中的每个数字chmod代表一个八进制(3 位)数字。三位数字,总共是 9 位。每个位代表一个权限;1 == 有权限,0 == 没有权限。

每个数字中的三位代表读取(二进制 100 == 十进制 4)、写入(二进制 010 == 十进制 2)和执行(二进制 001 == 十进制 1)。十进制 7 是读+写+执行权限。

命令的第一个数字chmod代表文件或目录所有者的权限。第二个是针对小组的。第三个是为了“宇宙”——也就是其他所有人。

因此,chmod 777代表您、组和每个人的读取、写入和执行权限。这通常比所需的访问权限大得多。

对于您的真实示例,想象一下如果一个名为的文件my_bank_account_credentials被更改为chmod 777. 不是很安全!恶意用户可以更改其中的内容,或者只是阅读它并愉快地拿走你的钱。

对于服务器来说,主要的危险是服务器代码中被利用的错误可能允许攻击者访问服务器进程有权访问的任何内容——这将包括任何具有777权限集的内容。

于 2012-06-30T05:17:52.317 回答
0

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 条件,每个人都知道这很糟糕。

于 2012-07-02T12:19:23.070 回答
-3

如果恶意条目到达您的应用程序、网站等。无论它对代码做了什么。关键点在数据库上,没有可能的保护措施来防止“写入”它。所以 chmod 777 权限一点也不危险。

于 2016-05-12T01:32:28.620 回答