Linux提權————Linux下三種不同方式的提權技巧
在滲透測試或者漏洞評估的過程中,提權是非常重要的一步,在這一步,黑客和安全研究人員常常通過exploit,bug,錯誤配置來提升許可權。本文的例子都是在虛擬機器裡測試的,不同的虛擬機器可以從Vulnhub下載。
實驗一:利用Linux核心漏洞提權
VulnOS version 2是VulHub上的一個Linux提權練習,當開啟虛擬機器後,可以看到獲取到低許可權SHELL後我們通常做下面幾件事
1.檢測作業系統的發行版本
2.檢視核心版本
3.檢測當前使用者許可權
4.列舉Suid檔案
5.檢視已經安裝的包,程式,執行的服務,過期版本的有可能有漏洞
檢視系統發行版
檢視核心版本
每 次在提權的時候,我們都會一次又一次的測試,我們將搜尋所有可能的提權技術,並依次應用,直到成功。我們將測試不同的核心exploit,也會暴力破解賬 號。這個例子我們知道作業系統採用的是Ubuntu 14.04.4 LTS,核心版本是3.13.0-24-generic,首先我們嘗試利用overlayfs,這個exploit會工作在Ubuntu 12.04/14.04/14.10/15.04的linux核心3.19之前和3.13.0之後,我們測試一下。
我們首先移動到/tmp目錄,然後新建一個檔案,貼上exploit程式碼進去
依次執行:
cd /tmp
touch exploit.c
vim exploit.c
vim儲存推出後,我們編譯程式碼
gcc exploit.c -o exploit
現在執行,如果提示沒有許可權,還需chomd 777 ./exploit
./exploit
通過截圖可以看到我們已經獲取到了root許可權,接下來獲取互動式的shell
python -c 'import pty; pty.spawn("/bin/bash")'
如果提權失敗了,我個人建議你測試幾個其他的exploit,新的核心版本也可以試試
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) – ‘overlayfs’ Local Root Shellhttps://www.exploit-db.com/exploits/37292/
Linux Kernel 4.3.3 (Ubuntu 14.04/15.10) – ‘overlayfs’ Local Root Exploit
https://www.exploit-db.com/exploits/39166/
Linux Kernel 4.3.3 – ‘overlayfs’ Local Privilege Escalation
https://www.exploit-db.com/exploits/39230/
最後核心提示:核心exploit提權有風險,有可能會崩潰系統。
實驗2:利用低許可權使用者目錄下可被Root許可權使用者呼叫的指令碼提權
Mr.Robot是另一個boot到root的挑戰虛擬機器,我拿這個例子來告訴你為什麼suid程式在提權的過程中是重要的,如果你以前對suid沒有了解,可以參考https://en.wikipedia.org/wiki/Setuid
我們首先檢視下當前使用者
通過截圖可以得知,當前使用者為”daemon”,我們接下來提權”daemon”到”root”
這臺Ubuntu 14.04執行linux核心3.13.0-55-generic,我嘗試已有的exploit都失敗了。
這次我們通過尋找系統裡可以用的SUID檔案來提權。執行:
find / -perm -u=s -type f 2>/dev/null
得到如下列表:通過截圖,我們發現nmap居然有SUID標誌位,來看看nmap版本
一個非常老的nmap版本,但是這個版本的nmap如何幫我們提權呢?
nmap支援“interactive.”選項,使用者能夠通過該選項執行shell命令,通常,安全人員會使用該命令來避免他們使用nmap命令被記錄在history檔案中
因為nmap有SUID位,所以通過“!sh”我們會獲取到一個root許可權的shell
在你的滲透過程,如果發現Nmap 3.48 有SUID位,可以按照本文的例子做下測試。
實驗3:利用環境變數劫持高許可權程式提權
PwnLad是筆者最喜歡的挑戰,一個攻擊者有幾個賬號,但是都不是root許可權。
我們當前登入的是”Kane”賬號,當前沒有有效的核心exploit,也沒有其他可以利用的suid檔案
只有在Kane的home目錄下有一個“msgmike.”檔案
使用file命令檢視下這個檔案
從截圖可以看到,這是一個ELF 32位 LSB執行檔案,但是當我們執行檔案的時候,報錯了
通過報錯資訊我們可以看到msgmike呼叫cat命令讀取/home/mike/msg.txt檔案。
針對這種情況,我們可以通過設定bash的$path環境變數來利用,通常的$PATH包含
然而當我們呼叫cat命令的時候,cat會從以上目錄來尋找,如果我們新增.到$PATH環境變數,則會先從當前目錄來尋找cat指令
新建cat,新增執行許可權
這樣當我們再次執行./msgmike命令的時候,就會觸發當前目錄下的cat(/bin/sh),從而提權。完整的exploit如下