一.原理
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参数去执行提权命令
版权归原作者 OneSec4 所有, 如有侵权,请联系我们删除。