通過可寫檔案獲取 Linux root 許可權的 5 種方法

發表於2018-06-26

Linux系統中,全部都是以檔案形式存在的,包括目錄、裝置都是有許可權的,共有讀、寫、可執行三種。管理員為檔案設定好許可權後,應該要考慮哪些Linux使用者會被允許和限制上述的三個許可權。

通過可寫指令碼進行root提取的5種方法:

· 複製 /bin/sh 到 /tmp

· 設定 /bin/dash的SUID位

· 通過sudoer給登入使用者完全的許可權

· 設定/bin/cp的SUID位

· 逆向連線到惡意程式碼

開啟攻擊機器,黑掉目標系統,然後進行許可權提升。假設成功地通過ssh登入到受害者的機器,並可以訪問非root的使用者終端。然後使用下面的命令,下面會舉例所有有寫許可權的二進位制檔案。

image.png

可以看到一個/lib/log中儲存的python檔案,在路徑中我們看到了sanitizer.py檔案的許可權為777。

image.png

Admin要將下面的指令碼加入,來清理/tmp中的垃圾檔案。如果攻擊者能夠識別受害者機器中的這類情形,就可以通過下面的方式來提升root許可權來破壞系統。

image.png

第一種方法

有許多的方法可以獲取root許可權,本方法中,我們將/bin/sh複製到/tmp資料夾中,然後設定/tmp/sh的SUID。這種方式非常簡單,首先,通過nano編輯器開啟檔案,然後用rm -r /tmp/* 替換下面的命令:

image.png

在/tmp目錄建立一個有SUID許可權的sh檔案後,允許sh檔案時會有root訪問許可權。

image.png

可以通過下面的圖片進行確認:

image.png

第二種方法

同樣地,可以用rm -r /tmp/* 替換下面行的內容

image.png

在設定了/bin/dash的SUID許可權後,執行後就可以獲取root許可權

image.png

可以通過下面的圖進行確認:

image.png

第三種方法

image.png

通過netcat逆向了連線後,就可以獲取root許可權。

可以通過下面的圖進行確認:

image.png

第4種方法

另一個方法是給登入的使用者sudo許可權。下面的圖中可以看出當前使用者wernerbrandes不能允許sudo命令。

image.png

同樣地,可以在下面替換rm -r /tmp/*

image.png

當輸入“sudo -l”命令時會發現,這是sudo使用者的一個成員。可以利用sudo bash來獲取root許可權。

image.png

第5種方法

因為在linux類系統中,passwd檔案起著很重要的作用。所以,如果攻擊者有機會修改passwd檔案,那麼這將會成為一種動態的許可權提升的方式。
同樣地,可以利用cat命令檢視etc/passwd檔案的內容。
UID:1000 & GID:1000 就是admin組隊成員。下面編輯一下nemo記錄來使其成為root組成員,選擇etc/passwd的整個內容並複製貼上到空text檔案中。

image.png

然後,在一個新的終端上生成一個含salt的密碼,然後複製。

image.png

然後貼上之前複製的含salt的密碼在使用者nemo的記錄詞條的X位置處,並修改UID&GID為0:0。完成上面的步驟後,我們就可以將其儲存為passwd。

image.png

利用可寫的指令碼替換 “rm -r /tmp/*”

image.png

設定/bin/cp的SUID來複制檔案。

image.png

將修改後的passwd檔案下載受害者機器的/tmp資料夾中。用下面的命令檢查/bin/cp的SUID位是否開啟。

image.png

下面確認是否改變了passwd檔案的內容:

image.png

可以看出passwd檔案中的變化:

image.png

可以執行下面的命令來獲取root許可權:

image.png

本文證明了攻擊者如何通過可寫檔案進行linux系統許可權提升。

相關文章