0


SUID提权

一.原理

SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限,若是对一些特殊命令设置了SUID,那么将会有被提权的风险,常用的SUID提权命令有nmap、vim、find、bash、more、less、nano和cp等。

当s出现在文件所有者的x权限时,被称为“Set UID”,简称为SUID。SUID对一个文件的限制与功能包括以下几点:

(1)SUID仅对二进制有效

(2)执行者对于该程序需要有x的可执行权限

(3)本权限仅在程序的执行过程中有效

(4)执行者具有该程序所有者(user)的权限SUID按照八进制为4,SGID为2,SBIT为1,在普通权限前一位,比如4777,其实就是rws-rwx-rwx,具有SUID权限的文件所属者X变为S。

SUID提权原理总结:

查看当前具有suid权限的用户,再利用具有suid权限用户的命令去执行我们想要执行的命令。
简而言之就是查找具有特定suid权限的参数,再利用其参数进行提权命令调用。

二.提权步骤

1.信息收集

(1)用户权限收集(whoami&id)

执行whoami、id等命令,确定用户mark为普通用户,其UID为1000(UID大于499小于65535为普通用户)

(2)SUID权限文件收集(find / -user root -perm -4000 -exec ls -ldb {} ;)

查找具有SUID权限的文件。

执行命令find / -user root -perm -4000 -exec ls -ldb {} ;,利用find找到有SUID权限(SUID按8进制为4)的文件并使用ls命令列出

命令解析

exec解释

-exec参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。

{}花括号代表前面find查找出来的文件名。使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便。在有些操作系统中只允许-exec选项执行诸如ls或ls -l这样的命令,如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。

2.提权

(1)目录切换(cd /tmp)

find文件所属者和所属组都为root用户,使用find命令可以执行其它的系统命令,因此可以使用find命令运行whoami查看当前用户。
执行命令cd /tmp,切换目录。

(2)任意文件创建(touch 文件名)

创建任意文件,这里执行命令touch1,创建文件1。

(3)特定SUID提权(find/nmap/bash等 文件名 -exec whoami ;)

执行命令find 1 -exec whoami ;,利用find命令查找名为1的文件,执行whoami命令,如图所示,当前用户为root,从而提升权限成功

三.总结

1.特定SUID参数利用,工具/手工探测后看参数是否被赋予SUID权限
Nmap,Vim,find,Bash,More,Less,Nano,cp等
2.查找到后,在其tmp目录下用touch创建用户后再用特定suid参数去执行提权命令


本文转载自: https://blog.csdn.net/Z526209693/article/details/125480346
版权归原作者 OneSec4 所有, 如有侵权,请联系我们删除。

“SUID提权”的评论:

还没有评论