在漏洞利用网站上,我看到安全分析师和黑客在展示概念证明时针对/etc/passwd文件。
如果您的服务器上存在本地文件包含或路径遍历漏洞,并且黑客能够访问(查看、读取但不能编辑)/etc/passwd 文件,这会产生什么影响?不是所有密码都在此文件中被设计混淆了吗?
在漏洞利用网站上,我看到安全分析师和黑客在展示概念证明时针对/etc/passwd文件。
如果您的服务器上存在本地文件包含或路径遍历漏洞,并且黑客能够访问(查看、读取但不能编辑)/etc/passwd 文件,这会产生什么影响?不是所有密码都在此文件中被设计混淆了吗?
唯一真正的影响是侦察 - 攻击者可以从文件中了解登录名和 gecos 字段(有时有助于猜测密码)/etc/passwd
。
造成这种情况的一个原因是,大约 20 年前,大多数 Unix 变体从将散列密码保留在/etc/passwd
文件中,并将它们移动到/etc/shadow
. 这样做的原因是,/etc/passwd
“finger”和“ident”之类的工具必须是世界可读的才能工作。一旦密码被隔离到/etc/shadow
中,该文件就只能由 root 读取。
也就是说,/etc/passwd
对于安全分析师和黑客来说,它仍然是一个流行的“标志”,因为它是一个传统的“嘿,我得到了我不应该得到的东西”的文件。如果您可以阅读,您也可以阅读 /etc 下的其他内容,其中一些内容可能对攻击者有用。/etc/yum.conf
但是如果你不知道系统上是否有 yum,就很难测试(比如说) ;/etc/passwd
始终存在并且是访问是否有效的可靠测试。
换句话说,getting的隐含影响/etc/passwd
是攻击者绕过了控制并且可以获得任意可读文件,这意味着“我赢了!”*
*没有任何明示或暗示的获胜保证
虽然@gowenfawr 达到了要点,但我还有一些要补充的:
大多数系统(但不是全部)将实际密码隐藏在/etc/shadow
. 要查看您的系统是否易受攻击,请检查真实用户帐户。如果看起来像
stighemmer:x:...
那么你的密码是安全的。
如果看起来像
stighemmer:kjsaashgdkwqvbm:...
那么你的密码是不安全的。
是的,密码使用单向哈希函数进行了混淆,但这还不够。有了这个文件,黑客就可以在不实际尝试登录的情况下检查给定用户是否有特定密码。
在 1970 年,这个检查很慢,而且事情还算安全。今天,黑客每秒可以检查数百万个密码。如果您的某个用户有一个可猜到的密码,则该用户的帐户将被黑客入侵。每一代处理器都在推动“可猜测”的极限。
现在您已经检查过,发现您的密码安全地存储在/etc/shadow
. 很好,问题解决了。
不完全的。/etc/passwd
包含更多信息。
它包含每个用户的全名。这对于社会工程攻击非常有用。
它包含系统用户列表,指示安装了哪些软件。
因此,我收到一封电子邮件,内容为“嘿 Stig,我忘记了 postgres 密码。你能提醒我吗?已签名,其他真实用户”。由于我有用的电子邮件客户端没有显示完整的电子邮件地址,我不会注意到这封电子邮件来自偏远国家。我回答:“它是‘S3CR37’”。糟糕,公司数据库刚刚被黑客入侵。
当然,这不是暴露全名的唯一方式,无论如何,您都需要向用户介绍社会工程攻击。
这可以帮助攻击者在短时间内进行蛮力攻击,因此攻击者不需要发现用户名,因为他已经获得了用户名,但他可以将攻击目标仅用于发现密码。
除非您不使用影子密码,否则访问权限/etc/passwd
并不是文件名所暗示的巨大风险(如果您在当今时代不使用影子密码,那么您就有问题了)。
第一个 unix 系统实际上存储了密码/etc/passwd
,这就是该文件被称为该文件的原因。它还存储了用户元数据的其他一些方面,例如用户的主目录、shell 等。回想起来,这并不是有史以来最伟大的设计决策,因为这意味着使用此元数据的程序需要能够读取/etc/passwd
才能获取该数据。
里面的密码/etc/passwd
是使用当时的算法加密的,但是包含加密的密码仍然是一个不必要的暴露风险,因此实施了影子密码来解决这个问题。由于历史原因,格式/etc/passwd
无法更改,但现代系统只是在其中放置了一个占位符(x
很常见)。实际的密码相关信息(实际的哈希值、密码的使用时间等)存储在另一个文件 中/etc/shadow
,只有 root 才能读取。
这并不是说访问/etc/passwd
是完全无害的。它仍然会产生一个用户名列表,尽管这在理论上是无害的(因为用户名不应该是秘密的),但得知有多少人使用他们的用户名作为密码可能会令人沮丧。在这个时代,它发生的频率越来越低,但它仍然经常发生,值得一试。
此外,GECOS 字段中/etc/passwd
通常包含用户真实姓名等元数据。这对于快速猜测本身或对进行可能产生更可能猜测的详细搜索很有用。不过,这是相当复杂的东西,远远超出(甚至可能不需要)访问/etc/passwd
自身