为什么 +::0:0::: 不应该在 /etc/passwd 中找到?

为什么 +::0:0::: 不应该在 /etc/passwd 中找到?

我正在读BSI 安全指南(德语),关于NIS,它明确提到应该防止该条目+::0:0:::出现在/etc/passwdNIS服务器的文件中。

根据我的研究,我发现这+会将整个 NIS 列表导入到 passwd 文件中。该指南提出的解决方案是在条目的密码部分添加一个*,这将使用户名在影子文件中查找。这是否有点适得其反,因为它本质上会使导入 NIS 列表变得毫无用处(因为这些列表在影子中没有条目)?

此外,该条目的合法用法是什么以及攻击者如何利用该条目(没有*)?

答案1

仅当您的文件中包含此类条目时,此类条目+::0:0:::才能按预期工作。如果改用此条目,则不会达到其预期效果。passwd: compat/etc/nsswitch.confpasswd: files nis

至少根据nsswitch.conf(5)我的 Debian 9 系统上的手册页,无论如何,这似乎都不是有效的语法:它应该是一个 NIS 用户名,将在该系统上获得 root 访问权限,或者只是+user::0:0:::包括除那些之外的所有 NIS 用户先前已使用或语法排除的内容,而不覆盖 NIS 指定的 UID/primaryGID 值。user+-user-@netgroup

推而广之,+::0:0:::似乎意味着“每个 NIS 用户都是该系统的 root 用户”,这从一开始就不是一个好主意。

危险在于,对于通过读取自行处理身份验证但不实现样式语法扩展的应用程序来说/etc/passwd/etc/shadowpasswd: compat行字面意思是“用户+拥有 UID 0 和 GID 0 并且没有密码”。

如果您正在使用此类应用程序,则这是一个“输入+用户名提示,只需Enter按密码提示即可;您现在拥有 root 访问权限”漏洞。由于没有有效的 shell,您可能无法立即获得 shell 访问权限:但仅通过应用程序进行 UID 0 访问可能会为精明的入侵者提供足够的杠杆作用,以便在不久之后获得完整的 root shell 访问权限。

相关内容