如果我們有 root 存取權限,我們能知道其他使用者的密碼嗎?

如果我們有 root 存取權限,我們能知道其他使用者的密碼嗎?

如果一個人擁有特定 RHEL 電腦的 root 存取權限,他們是否能夠檢索其他使用者的密碼?

答案1

TL;DR:不,密碼儲存為雜湊值(通常)無法恢復。

Linux 不會在任何地方儲存純文字密碼預設情況下。它們透過各種演算法進行雜湊或加密。所以,一般來說,不,這對於儲存的資料是不可能的。

如果您的密碼儲存在/etc/passwd資料庫以外的其他位置,則它們的儲存方式可能​​允許這樣做。 htpasswd檔案可以包含弱加密的密碼,而其他應用程式可能出於各種(通常是不良的)原因儲存較弱的雜湊值或純文字密碼。

此外,由於各種原因,使用者設定檔可能包含未加密的密碼或弱保護的密碼 - fetchmail 從其他服務抓取內容,.netrc或者簡單的自動化事物可能包含密碼。

如果使用較舊的弱演算法(3DES、MD5)對密碼進行雜湊或加密,則可以相當有效/廉價地計算出密碼是什麼 - 儘管是透過攻擊資料而不是僅反轉轉換。 (例如:諸如此類的事情http://project-rainbowcrack.com/或者http://www.openwall.com/john/

由於您是 root,因此還可以在另一個層級攻擊使用者密碼 - 將登入二進位檔案、sudo 或 PAM 的一部分等替換為在輸入密碼時捕獲密碼的內容。

因此,具體來說,不是,但總的來說,擁有 root 存取權限確實可以更輕鬆地透過各種側面管道獲取使用者詳細資訊。

答案2

與這裡的其他一些答案相反,我想說,對於這個問題和許多其他以“如果你有根”結尾的問題,簡單的答案是“是”。

基本上,root 可以在機器上執行系統本身可以執行的任何操作。系統可以接受您的密碼,因此 root 可以透過足夠的努力接受您的密碼,或用他自己的密碼代替您的密碼。更重要的是,他可以簡單地更改您的密碼,或成為您。

具體來說,密碼通常是加密的。這通常是某種所謂的「單向」演算法,它會產生一個可用於檢查密碼的數字(雜湊),但通常不會反轉該數字並再次取回密碼。因此,這不僅僅是讀取文件來獲取某人的密碼的問題。

也就是說,您可以讀取他們的shell 歷史記錄和登入歷史記錄,他們很可能在某些時候輸入了密碼而不是用戶名,或者在shell 中輸入了密碼而不是在密碼提示符處輸入了密碼。在這種情況下,它將是純文字。這在基於文字的終端上非常常見,據我所知沒有好的解決方案。

然而,即使拋開這個問題,「單向」加密也不是真正的一種方式。有許多工具可以檢查密碼短語的多種組合,並使用相同的單向過程對它們進行加密,直到找到匹配的組合。然後他們知道將獲得存取權限的密碼(儘管作為 root,他們已經在那台機器上具有存取權限)。

更糟的是,還有彩虹表,它們是上述過程的預先計算的答案:人們已經根據給定的加密密碼產生了原始密碼。使用這些,這是一個簡單的查找 - 不需要耗時的破解嘗試。

再次強調,根級存取是需要保護的。一旦受到損害,整個機器及其上的所有東西都會受到損害。是時候重新開始了,包括通知所有用戶,您的企業不再值得信賴來保護他們的隱私。是的,這可能意味著破產。

答案3

如果有的話root,您可以執行密碼破解程式/etc/shadow(假設使用本機密碼,而不是 LDAP 或 Kerberos 等)。如果他們選擇好的密碼並且系統配置為使用強密碼雜湊,這可能不會有效。但係統密碼並不是以明文形式儲存的;密碼甚至不能直接取得root

答案4

所有密碼都儲存在/etc/shadow檔案中。您可以使用 root 存取權限開啟此文件,並查看hash value每個使用者(甚至 root 使用者)的這些密碼。

除非您有任何類型的密碼解密軟體,否則您無法將這些雜湊值轉換回正常文字。

但是,如果您有權存取 root 用戶,則可以使用以下命令更改任何普通用戶的密碼並存取他們的帳戶。

root@localhost$ passwd pradeep

這將詢問您要為 user 設定的新密碼pradeep。這樣您就可以更改 pradeep 的密碼。

現在您可以透過以下方式從他的帳戶存取:

root@localhost$ su pradeep

這將導致切換到 pradeep 用戶,您將獲得以下終端:

pradeep@localhost$

相關內容