1. 程式人生 > 其它 >Linux史上最全Centos對忘記的root密碼破解

Linux史上最全Centos對忘記的root密碼破解

一、摘要

centos的root密碼忘記了怎麼辦?通常有兩種情況:一種是還處於登陸ROOT的過程中,突然想不起來密碼了,這種情況我們可以嘗試對ROOT密碼進行破解;另一種是退出ROOT忘記密碼登陸不上,這種情況我們就要選擇對ROOT密碼進行修改。

二、破解密碼的情況

1、shadow檔案解析知識點

/etc/shadow(儲存使用者密碼的檔案)
檔案裡面的資料是加密的{加密後的口令密碼}的格式為 $id$salt$encrypted
id為1時,採用md5演算法加密
id為5時,採用SHA256演算法加密
id為6時,採用SHA512演算法加密
salt為鹽值,是對密碼進行hash的一個干擾值
encrypted為雜湊值

2、John the Ripper

John the Ripper是一個流行的口令破解工具,它支援Windows和Linux臺,是一個開源軟體。(也有收費版本)
官方地址:http://www.openwall.com/john 可以複製下載連結使用wget下載。

安裝John the Ripper:
wget https://www.openwall.com/john/k/john-1.9.0.tar.gz --no-check-certificate

tar -xvf john-1.9.0.tar.gz(解壓)

cd john-1.9.0/src/

make clean linux-x86-64(make clean 自己的作業系統)

cd ../run/
破解
password.txt和john.pot都在run下

./unshadow /etc/passwd /etc/shadow > password.txt
將shadow檔案匯入password.txt,也可以直接複製shadow檔案中所有欄位

./john password.txt #對雜湊值進行破解

cat john.pot #檢視破解結果

john工具對於同一個shadow檔案只會進行一次爆破,如果第二次執行john shadow是不會得到結果的,只會得到如下輸出。

點選檢視程式碼
Warning: detected hash type "md5crypt", but the string is also recognized as "md5crypt-long"
Use the "--format=md5crypt-long" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt, crypt(3) $1$ (and variants) [MD5 128/128 AVX 4x3])
No password hashes left to crack (see FAQ)
如果想檢視上一次爆破的結果,可以使用以下命令。 john --show password

三、需要修改ROOT密碼的情況

1.開機輸入e 編輯

首先,啟動系統,進入開機介面,在介面中按“e”進入編輯介面,如圖

2.輸入 init = /bin/sh

進入編輯介面,使用鍵盤上的上下鍵把游標往下移動,找到以“Linux16”開頭內容所在的行數,在行的最後面輸入:init=/bin/sh,如圖

如果不確定系統是否開啟了Selinux或者剛裝完沒有修改過的系統,則最好用下面的方法解決:既在以字串“Linux16”開頭的行,將游標移動到該行的結尾,然後輸入“init=/bin/bash enforcing=0”(前者作用讓系統登入後加載bash直譯器,後者是且關閉Selinux)

3.ctrl + x 單使用者模式

輸入完成後,直接按快捷鍵:Ctrl+x 進入單使用者模式

4.輸入mount -o remount,rw/

接著,在游標閃爍的位置輸入:mount -o remount,rw/ (注意:各個單詞之間有空格),完成後按鍵盤間的回車。如圖

“mount -o rw,remount /”命令是重新掛載根目錄為可寫狀態(rw表示可寫,remount是重新掛載),在單使用者模式下預設根檔案系統是處於只讀狀態。

5.passwd修改密碼

在新的一行最後面輸入:passwd,完成後按鍵盤的回車鍵。輸入密碼,然後再次確認密碼即可(密碼最好是8位以上,但不是必須的),密碼修改完成後,會電視passwd.....的樣式,說明密碼修改成功

6.輸入 touch /.autorelabel

接著,在滑鼠閃爍的位置,輸入:touch /.autorelabel(注意:touch與 /後面有一個空格),完成後按鍵盤的回車鍵
注意:如果是系統的SELinux處於開啟狀態,並且前文修改核心選項時,沒有增加“enforcing=0”,則此處需要多執行一條“touch /.autorelabel”命令以便在下次系統引導前重新標記系統中的所有相關檔案,因為在SELinux開啟時,修改root密碼時修改password檔案會導致SELinux安全上下文報錯,如果前文修改核心選項時,已增加“enforcing=0”,那麼在修改密碼檔案時,Selinux是關閉狀態,因此,就不需要執行“touch /.autorelabel”命令了。

7.輸入exec /sbin/init密碼生效

繼續在游標閃爍的位置中,輸入:exec /sbin/init(注意:exec與/之間有一個空格),完成後按鍵盤的回車鍵,等待系統自動修改密碼(時間可能有點長),完成後,系統會自動重啟,新的密碼生效。

配置完後,執行exec /sbin/init命令重啟系統,注意,此時,無法使用其它重啟命令