共計 2596 個字符,預計需要花費 7 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章主要介紹了用于提權的 Linux 命令是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
xxd 介紹
我們知道如果想要將某個文件轉換成另一種格式,我們可以通過使用一些在線的轉換工具,它可以幫助我們將一個文件轉換成幾乎任何我們所需的文件格式,例如:“pdf to word,jpg to pdf,excel to pdf“等等。但如果有人想要將任意文件轉換為十六進制或二進制形式,那又該怎么辦呢?
其實這很簡單,在 Linux 上我們可以通過 xxd 這個命令來做到這一點。xxd 命令可以為給定的標準輸入或者文件做一次十六進制的輸出,它也可以將十六進制輸出轉換為原來的二進制格式。這也有助于對任意文件的編碼和解碼。
首先,讓我們使用 help/man 命令,查看 xxd 命令的具體使用方法。
xxd -h
使用 xxd 執行的主要操作
將文件內容轉換為十六進制:例如,我創建了一個名為“secret.txt”的新文件,現在我想將其內容都轉換為十六進制形式,我可以通過鍵入以下命令執行:
Syntax: xxd filename
xxd secret.txt
如下圖所示,很明顯 xxd 已經為文件“secret.txt”生成了十六進制轉儲。
在這里我們可以觀察到,以下十六進制轉儲獲得了它的默認格式,例如:
索引行數
每組的默認八位字節數為 2,其分組大小為 4 字節
標準列長度為 16 位,帶有空格
使用 xxd 跳過第 n 行:在轉換文件時,有許多數據可能是我們不需要的。因此,我們可以跳過這些內容。我們可以使用 xxd 跳過第 n 行,并在跳過的行后生成十六進制值。
假設在我當前的情況下,我想要從第 5 行生成十六進制轉儲,那么可以通過使用“-s”參數后跟 xxd 命令來實現。
xxd -s 0x50 secret.txt
將輸出限制為特定長度:以上我已經解釋了如何通過跳過行數來檢索數據。但是,如果你想要限制標準輸出的長度,那么你可以使用“-l”參數。
這里,我限制了我的內容長度,以將數據打印到有限的范圍,即第 5 行,如下圖所示。
xxd -l 0x50 secret.txt
因此,我們可以觀察到兩個命令之間的差異;第一個命令生成從第 6 行初始化的十六進制值,第二個命令根據十六進制索引以第 5 行結束,請參考以上截圖。
將文件內容轉換為二進制文件:如果你想將文件轉換為二進制形式,則可以使用“-b”選項。命令如下:
xxd -b secret.txt
設置列長:上面我已經介紹了如何跳過并限制輸出到范圍,其實我們還可以設置列的長度。默認情況下,對于任何轉儲文件它都是 12, 16。
默認值:我們知道默認列長度為 16。這將打印 16 個字符,包括空格。
xxd -l 0x20 secret.txt
將列長度設置為 32:我使用“-l”選項設置了結束索引以限制打印數據的范圍。然后我使用“-c”參數,將列的長度設為了 32。
xxd -l 0x40 -c 32 secret.txt
從下圖中,我們可以知道 xxd 是如何限制列長度的。
將列長度設置為 9:現在我們將列長度設置為“9”。
xxd -l 0x40 -c 9 secret.txt
在所有這些情況下,xxd 都是通過空格計數每個字符來為文件創建十六進制轉儲的。
純 16 進制轉儲:我們可以使用“-ps”選項,以 postscript 的連續 16 進制轉儲輸出。這里我們將其輸出保存在 hex 文件中,以獲取 secret.txt 文件的純 16 進制轉儲。為了驗證結果,我們使用 cat 命令從 hex 文件中讀取輸出。
xxd -ps secret.txt hex cat hex
從下圖中,我們可以知道 xxd 是如何為“secret.txt”文件,創建純十六進制轉儲的。
還原文件:我們可以使用“-r”選項,來還原轉換的文件內容。在我們的例子中,我使用了“-r -p”將純十六進制轉儲的反向輸出打印為了 ASCII 格式。
xxd -r -p hex
分組大小字節:如果我們需要將輸出分組為多個八位字節,那么我們可以使用“-g”選項來實現。默認情況下為 2。因此,如果我們將值設為 4,那么它將被分組為 8 位。
在下圖中我們將值設為 8,它將分組為 16 位作為輸出以簡化結果。
xxd -l 0x30 -g 8 secret.txt
SUID Lab 設置
SUID 特殊權限是以命令的所有者權限來運行這一命令的,而不是以執行者的權限來運行該命令?,F在,讓我們在 xxd 上啟用 SUID 權限,這樣本地用戶就有機會利用 xxd 來獲取 root 權限。
鍵入以下命令,啟用 SUID 位:
which xxd chmod u+s /usr/bin/xxd ls -al /usr/bin/xxd
SUID 利用
現在,我們將通過特殊權限位 SUID 來利用 xxd 服務。為此,我創建了一個受害者機器的會話,這將允許我們利用目標系統的本地用戶訪問。
讓我們使用 ssh 連接到目標機器,命令如下:
ssh test@192.168.1.103
成功訪問受害者機器后,我們使用 find 命令來查找具有 SUID 權限的二進制文件。
find / -perm -u=s -type f 2 /dev/null
這里我們可以看到有許多二進制文件具有 SUID 位,但我們重點關注 /usr/bin/xxd。
在 xxd 上獲得特殊權限位 SUID,我們將獲取用于提取密碼哈希文件的 shadow 文件。
如下圖所示,我已請求通過使用 xxd 暴露 /etc/shadow 文件,它將為該文件生成十六進制轉儲,并通過管道傳輸 xxd 命令來恢復其輸出。
xxd /etc/shadow / xxd -r
現在,我將使用 john the ripper 這款工具來破解哈希密碼。這樣我們就可以獲取用戶憑據,如下圖所示。
john hash
獲取憑據后,我們就可以切換用戶了。首先,我們來檢查下用戶的 sudo 權限:raj,發現用戶“raj”具有所有權限。
su raj sudo -l sudo su
因此,讓我們直接切換到 root 用戶帳戶,并訪問 root
shell。至此,我們已成功利用 xxd 命令提升了我們的用戶權限。
感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“用于提權的 Linux 命令是什么”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!
向 AI 問一下細節
丸趣 TV 網 – 提供最優質的資源集合!