用户是否可以在没有目录读取权限的情况下暴力破解目录列表?

用户是否可以在没有目录读取权限的情况下暴力破解目录列表?

我注意到当用户在他所做的目录中工作时不是具有读取权限,使用 cd 会产生不同的错误消息,具体取决于子目录是否存在:

$ ls
ls: cannot open directory .: Permission denied
$ cd nonexistentdirectory
-bash: cd: nonexistentdirectory: No such file or directory
$ cd existingdirectory
-bash: cd: username: Permission denied

这就提出了一个问题:用户可以在没有读取权限的情况下暴力破解以这种方式列出的目录,这是否是一个安全缺陷?如果是这样,这是 UNIX 或 Bash 的缺陷吗?

答案1

这不是安全缺陷,因为该功能正在按其应有的方式工作。 (鉴于此功能几乎是偶然出现的,这并不奇怪。)您的期望可能与该功能的实际用途不太相符。

当用户对目录具有执行权限但不具有读取权限时,只要知道该目录的名称,该用户就可以访问该目录中的任何条目。此访问包括有关条目的所有元数据,包括其名称、类型、大小、日期等。因此,用户可以将不存在的条目与他可能无法访问其内容的现有条目区分开。

条目的名称就像密码一样。如果您知道密码,则可以访问该条目。条目可能有额外的访问限制,但这是一个不相关的问题。您始终可以通过尝试所有可能的密码来暴力破解密码身份验证。

如果您不想透露有关 --x 目录中的条目的任何信息,请使用不可猜测的名称(即足够长的随机名称)。

答案2

是的,您可以将其视为 Unix 文件和目录权限定义和实现方式的安全缺陷。这是一种妥协;例如,如果用户知道路径,它使您能够授予用户访问受限制层次结构深处的目录的权限。

解决方法是嵌套受限制的目录,以便您必须猜测几个组件才能访问真正敏感的信息。但当然,这并没有真正增加安全性,只是变得模糊。

无论如何,用户root都可以绕过这些限制,因此它仍然不是特别安全。如果您想要合理的安全性,多用户系统可能不适合您。

相关内容