服务器如何通过chmod 777变得容易受到攻击?

时间:2012-06-30 05:06:45

标签: security chmod

我经常读文章说

的内容
  

chmod 777很糟糕!

我在想:

当我对文件执行chmod 777时,我如何变得脆弱?

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

5 个答案:

答案 0 :(得分:20)

允许任何人 查看和/或修改文件系统内容:假设攻击者已经具有在共享主机平台上非常常见的一般系统访问权限。从一开始就比其他人更“硬化”。这是一个小的不完整的可能的攻击媒介列表:

  1. “您的安全代码”可能被“他们的恶意代码”覆盖,该代码在相同的网络服务器上下文中运行..可能会窃取密码/木马,暴露数据库,删除内容等。也就是说,其他人的代码可以在您的安全上下文下运行。
  2. 可以在网络服务器(或所有者)上下文之外查看内容(例如“脚本来源”)。有一个“安全”密码连接到数据库?好了,不再了......
  3. 如果内容受权限保护(例如之前无法访问网络服务器),网络服务器可能能够访问/列出敏感信息 ...如果你没有这样做就不好了我的意思是分享它。不同的Web服务器配置也会以不同的方式处理“列表”,这也会暴露出超出预期的内容。
  4. 在上文中,我还假设“group”包括web-server主体,并且涉及Web服务器(和/或共享主机),它可以用作主要攻击媒介和/或安全漏洞。但是,我再次强调这一点:上面的列表不完整

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

答案 1 :(得分:2)

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

例如,假设您有一个WordPress站点,并且某处有一个错误,允许攻击者在服务器守护程序的凭据下执行任意PHP代码(这在过去发生过很多次,无疑会发生再次在将来)。 WordPress本身的代码存储在服务器守护程序可以读取的.php个文件中。如果这些文件是模式777,那么攻击者可以写信给他们 - 这意味着他们可以修改代码 - 改变你的网站所做的事情。也许他们通过漏洞利用"安装了#34;套件,现在访问您网站的每个人都会被浏览器黑客入侵。也许他们安装了一个搜索引擎优化垃圾邮件工具包,现在谷歌认为你正在销售伟哥(但如果你直接访问该网站它是看不见的 - 是的,这确实发生了。)

如果.php文件是模式755,并且由不是服务器守护程序的用户拥有,则攻击者无法永久更改网站的内容。

请注意,这意味着WordPress的自我升级管理面板功能存在风险,因为只有在WordPress可以自行修改时它才有效 - 你不能拥有它并且也有一旦他们可以执行任意PHP,攻击者就无法修改文件。

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

答案 2 :(得分:1)

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

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

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

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

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

对于服务器,主要的危险是服务器代码中的漏洞可能允许攻击者访问服务器进程有权访问的任何内容 - 其中包括具有777权限集的任何内容。 / p>

答案 3 :(得分:0)

chmod是CHange MODe命令。 777表示权限。有三组人可以拥有权限(每个人都有自己的数字),按顺序:所有者(文件或目录,前7个),组(每个人与所有者属于同一组,第二个7) )和世界(第三个7)。

所有者是文件的用户 - 那就是你。在* nix世界中,用户属于组。因此,您可能是组营销中的用户/所有者Bob。这个模型可以让你做一些事情,比如Bob可以读/写文件,其余的营销只能读取文件,其他用户可以读取文件。

777中的每个数字都是以下二进制表示: rwx(读/写/执行)。所以755的chmod意味着: 111(7) - 所有者可以读写执行 101(5) - 组中的其他可以执行或读取,不写入 101(5) - 世界其他地方可以阅读和执行,不可写。

该设置意味着您可以读/写并执行您的文件,但访问您网站的人只能读取或执行该文件。因此,您需要将cgi-bin中的程序设置为755,这样人们就可以将该文件作为程序执行。

如果您将权限设置为“chmod 644”,则会获得一个可由您编写的文件,但只能由世界其他地方阅读。这对于直接的HTML文件很有用,所以没有hanky panky继续下去。但是尝试执行权限为644的文件,你会收到错误。

CHMOD 777将允许每个人对服务器的文件进行更改,它会给出WRITE条件,每个人都知道它是坏的。

答案 4 :(得分:-3)

如果恶意条目到达您的应用,网站等,无论它对代码做了什么。关键点在于数据库,并且没有可能防止“写入”它。所以chmod 777权限完全没有危险。