如果我们具有root用户访问权限,我们能否知道其他用户的密码?


24

如果某人具有特定RHEL计算机的root访问权限,他们是否可以检索其他用户的密码?


4
是的,您可以,他们可以和您很好地分享您的问题:)换句话说,您的问题并不准确。
poige 2012年

Answers:


37

TL; DR:否,密码存储为哈希(通常无法恢复)。

Linux 默认情况下不会在任何地方存储纯文本密码。通过各种算法对它们进行哈希处理或加密。因此,通常,不,这对于存储的数据是不可能的。

如果您将密码存储在/etc/passwd数据库以外的其他位置,则可以通过允许的方式存储密码。 htpasswd文件中可能包含较弱的加密密码,而其他应用程序可能出于各种(通常是错误的)原因而存储较弱的哈希值或纯文本密码。

此外,由于各种原因,用户配置文件可能包含未加密的密码或受保护程度不高的密码-fetchmail从其他服务获取内容.netrc,或者简单的自动化操作可能包括该密码。

如果使用较旧的弱算法(3DES,MD5)对密码进行哈希处理或加密,则可以合理有效/廉价地计算出密码的含义-尽管可以通过攻击数据而不是仅仅逆转转换来进行。(例如:http : //project-rainbowcrack.com/http://www.openwall.com/john/之类的东西)

由于您是root用户,因此也有可能在另一个级别上攻击用户密码-替换登录二进制文件,sudo或PAM的一部分等,并使用在输入密码时会捕获密码的方式。

因此,特别是,没有,但总的来说,具有root用户访问权限确实可以更轻松地通过各种辅助渠道获取用户详细信息。


1
在Wikipedia上的更多信息:/etc/shadow加密哈希函数密码破解
Tim

2
在大多数情况下,这是一个很好的答案,但是3DES和MD5实际上并不比其他算法弱很多。暴力破解仍然是从哈希中查找密码的唯一方法(彩虹表是一种针对任何算法来加速暴力破解方法的方法,不是MD5的弱点)。改进密码哈希方法的原因是它速度慢且使用了足够长的盐。
吉尔(Gilles)'所以

13

与这里的其他答案相反,我想对这个问题以及其他许多以“如果你有根”为结尾的问题的简单答案是“是”。

基本上,root可以在计算机上执行系统本身可以执行的任何操作。系统可以接受您的密码,因此root可以通过足够的努力来接受您的密码,或者由您自己的密码代替您的密码。更重要的是,他可以简单地更改您的密码或成为您。

具体来说,密码通常是加密的。这通常是某种所谓的“单向”算法,该算法会生成一个数字(散列),该数字可用于检查密码,但通常不会反转该数字并再次获取密码。因此,仅读取文件来获取某人的密码就不是问题。

就是说,您可以阅读他们的shell历史记录和登录历史记录,他们很可能在某个时候键入了密码而不是用户名,或者在shell中而不是在密码提示符下键入了密码。在这种情况下,它将是纯文本。在基于文本的终端上,这是令人不安的普遍现象,没有我知道的好的解决方案。

但是,即使撇开该问题,“单向”加密也不是真正的一种方法。周围有很多工具可以使用多种密码短语组合,并通过相同的单向过程对其进行加密,直到找到匹配的短语。然后,他们知道将获得访问权限的密码(尽管以root身份,他们已经在该计算机上具有访问权限)。

更糟糕的是,有彩虹表是对上述过程的预先计算的答案:人们已经生成了来自给定加密密码的原始密码。使用它们,这是一个简单的查找-无需耗时的破解尝试。

同样,根级访问是要保护的东西。受到破坏后,整个计算机及其上的所有东西都将受到破坏。现在是时候重新开始了,包括通知您的所有用户您的业务不再受信任可以保护他们的隐私。而且,是的,这可能意味着要倒闭。


访问我的帐户与获取密码不同。如果您允许我让用户登录到您的计算机,而我(愚蠢但很常见)对所有计算机使用相同的密码,则您无法仅通过b / c来访问所有计算机,您可以在计算机上更改我的密码。我只是被一个帐户锁定。
emory 2012年

此外,如果将加密文件系统用于敏感数据,则根访问权限受损并不意味着需要重新开始。
emory 2012年

@emory如果您使用加密的文件系统并且系统受到root攻击,那么您可以信任处理加密的文件系统的代码,读取加密密码等吗?我会说你不能,因为按照定义,root-privilege折衷意味着系统上的所有内容(一直到内核)都可以抢夺。
CVn

@MichaelKjörling我可以信任处理加密文件系统的代码吗?在大多数情况下,不会。就我而言,是的。它位于只读媒体上。根无法写入。日志进入WORM驱动器。一样,我没有分发根密钥,可能会重新开始。
2013年

8

如果有的root话,您可以针对它运行密码破解程序/etc/shadow(假设使用本地密码,而不是LDAP或Kerberos等)。如果他们选择了正确的密码,并且系统配置为使用强密码哈希,则此方法可能无效。但是系统密码不是以明文形式存储的。密码甚至不能直接使用root


5

所有密码都存储在/etc/shadow文件中。您可以使用root用户访问权限打开此文件,并查看hash value每个用户(甚至root用户)的密码。

除非您拥有任何类型的密码解密软件,否则您无法将这些哈希值转换回普通文本。

但是,即使您有权访问root用户,也可以使用以下命令更改任何普通用户的密码并访问其帐户。

root@localhost$ passwd pradeep

这将要求您输入要为user设置的新密码pradeep。这样,您可以将passwd更改为Pradeep。

现在,您可以通过以下方式从他的帐户访问:

root@localhost$ su pradeep

这将导致切换到高级用户,您将获得一个如下所示的终端:

pradeep@localhost$


1
即使不更改密码,您也可以执行“ su pradeep”,因为当您用root用户执行“ su pradeep”时,您无需键入pradeep密码即可登录...
Wolfy 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.