一、什么是SUID权限:
SUID是一种对二进制程序进行设置的特殊权限,在运行相应程序时会拥有临时的root权限,也就是仅在运行时拥有root权限,且只在此程序拥有root权限,程序外则无,若是对一些特殊命令 (命令也是程序的一种)设置了SUID,那么将会有被提权的风险,常用的SUID提权命令有nmap、vim、find、bash、more、less、nano和cp等。
二、提权步骤:
1、查看当前用户身份:
在命令行输入whoami等命令,确认自己为普通用户(其实这一部可以省略,大多数情况下都是普通用户,不然也不需要提权)
2、find命令寻找具有SUID权限的文件:
命令为:
find / -user root -perm -4000 -print 2>/dev/null
-
/ :代表根目录,也就是说从根目录开始查找
-
-user :按文件属主类型查找
-
-perm:按文件权限来查找,4000,2000,1000为分别表示SUID,SGID,SBIT
-
-print:将匹配到的文件进行标准输出
-
2>/dev/null : 2代表标准错误输出(文件描述符的一种),>代表输出重定向,/dev/null是一个特殊的文件,输出到此文件的东西都会被丢弃,你为可以理解为垃圾桶
执行结果为:
我们可以看到结果大多为/bin文件夹里面的文件,这里要说一下:/bin目录下包含了用户命令文件,也就是说find的命令匹配到的/bin目录里的命令大多都可以进行提权操作,在执行相关命令的同时拥有root权限
3、find命令提权:
通过搜索结果我们可以看到,find命令是拥有SUID权限的,接下来我们便利用find命令进行提权
这里需要用到find命令里面的一个参数: -exec (对匹配的文件执行该参数所给出的shell命令)
shell命令格式应为:命令 { } ;
exec后面的命令是以分号为结尾的,故 ; 不可省略
提权命令:
find 任意已有文件名 -exec whoami \;
(\为转义字符,将引号转义为最初的引号,因为;在不同系统不同命令中有着不同的含义,所以需要转义)
结果为:
我们可以看到当前用户为root
到此find提权结束,你可以令-exec后为任何shell命令,它都将以root的权限进行
其他命令的提权以后再更新