一、Linux提權
1、SUID提權
SUID(設置用戶ID)是賦予文件的一種權限,它會出現在文件擁有者權限的執行位上,具有這種權限的文件會在其執行時,使調用者暫時獲得該文件擁有者的權限。
為可執行文件添加suid權限的目的是簡化操作流程,讓普通用戶也能做一些高權限才能做的的工作。但是如果某些現有的二進制文件和實用程序具有SUID權限的話,就可以在執行時將權限提升為root
?
命令:find / -perm -4000 -type f 2>/dev/null find / -perm -u=s-perm -4000:查找權限為“4000”的文件,其中“4000”是表示suid權限的數字。-type f:查找類型為文件的結果,而不是目錄或其他類型的文件。2>/dev/null:這個部分是重定向操作。2> 表示重定向標準錯誤(stderr),/dev/null 是一個特殊的設備文件,它丟棄所有寫入其中的數據。因此,2>/dev/null 的作用是將 find 命令產生的任何錯誤消息丟棄,不在終端顯示。
詳細的核心原理:
SUID提權的原理與Linux進程的UID有關,進程在運行的時候有以下三個UID:
(A)Real UID:執行該進程的用戶的UID。Real UID只用于標識用戶,不用于權限檢查。
(B)Effective UID(EUID):進程執行時生效的UID。在對訪問目標進行操作時,系統會檢查EUID是否有權限。一般情況下,Real UID與EUID相同,但在運行設置了SUID權限的程序時,進程的EUID會被設置為程序文件屬主的UID。
(C)Saved UID:在高權限用戶降權后,保留的UID。
如果某個設置了SUID權限的程序運行后創建了shell,那么shell進程的EUID也會是這個程序文件屬主的UID,如果屬主為root,便是一個root shell。root shell中運行的程序的EUID也都是0,具備超級權限,于是便實現了提權。
2、sudo
/etc/sudoers文件是sudo權限的配置文件,其中儲存了一些用戶或組可以以root權限使用的命令,如果可以寫這個文件,就可以賦予普通用戶sudo權限,然后就可以借助其他命令提權
可以利用sudo提權的命令如下:
wget、find、cat、apt、zip、xxd、time、taskset、git、sed、pip、ed、tmux、scp、perl、bash、less、vi
sudo find提權
find 命令用來在指定目錄下查找文件,這里使用“exec”來執行/bin/bash,以訪問root shell
sudo find /home -exec /bin/bash \;
其他的詳細的命令:Linux提權——SUDO_sudo提權-CSDN博客
3、/etc/passwd 提權
這個需要對passwd有寫入權限,正常root用戶的uid為0,如果自己寫進去一個用戶把它的uid改為0的話,用這個用戶登錄,系統就會切到root用戶了
4、內核提權漏洞
利用內核漏洞提取一般三個環節:
第一步:對目標系統進行信息收集,獲取系統內核信息及版本信息【uname -a】
第二步,根據內核版本獲取對應的漏洞以及exp
第三步,使用exp對目標進行攻擊,完成提權
例子:
臟牛內核漏洞提權的原理:
在Linux內核的內存子系統處理私有只讀內存映射的寫時復制損壞的方式中出現了一種競爭狀況,一個低權限的本地用戶可以利用此漏洞獲取對只讀存儲器映射的寫訪問權,所以有可能進一步導致提權漏洞。
5、Crontab定時任務提權
crontab 文件是計劃任務的配置,此文件只有 root 可寫,但是我們不需要去修改 crontab,只查看里面的有哪些任務,比如定時執行了哪些腳本,再查看對應腳本的權限,若可寫,則將提權的代碼寫入這些腳本。
非 root 權限的用戶是不可以列出 root 用戶的計劃任務的。但是 /etc/ 內系統的計劃任務可以被列出,并且默認這些程序以 root 權限執行
cat /etc/crontab
6、docker 組提權
docker組用戶提權,目的是利用docker組的用戶來提權,因為docker組用戶在容器下為root權限,通過掛載方式在容器下給本機添加sudo權限的用戶,從而可以利用sudo命令。如果沒有擁有sudo權限的用戶,是無法執行sudo命令,在kali下會提示用戶不在sudoers等提示。
7、環境變量劫持
PATH指定了存儲可執行程序的所有bin和sbin目錄。當用戶在終端上執行任何命令時,它會通過PATH變量指定的路徑去搜尋可執行文件
使用echo命令顯示當前PATH環境變量:
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
如果普通用戶登陸上去之后,他的path目錄下有可以執行的二進制文件,并且這個文件里面里面還有高權限的命令的時候,這時候我們執行這個命令就能獲得高權限。
例子:如果可執行目錄下面有下面這種代碼,里面有危險函數
那么你執行他的話就能獲得高權限。