SUDO授权与提权
使用su命令可以让普通用户切换到root身份。
当多人使用同一台主机时,大家都使用su切换到root,那必然都知道root的密码,而且root操作会有风险,知道的人越多也更容易泄露。为了避免这类问题,解决方案是使用SUDO命令,他可以让你切换至root权限去执行命令而无需知道root密码。
什么是sudo
给普通用户某个命令有root权限,并不需要给root密码,毕竟知道root密码的人越多越不安全。
利用sudo (Substitute User and Do 的简写)给其临时授权,临时让其以root 权限运行某个程序。
sudo组成
文件语法:
root ALL=(ALL) ALL
root表示用户名
· 第一个 ALL 指示允许从任何终端、机器访问sudo
· 第二个 (ALL)指示sudo命令被允许以任何用户身份执行
· 第三个 ALL 表示所有命令都可以作为root执行
SUDO执行原理
普通用户执行sudo命令时 -> 首先会检查/var/db/sudo/目录下是否有用户时间戳 -> 检查/etc/sudoers配置文件是否有sudo权限 -> 有权限就执行命令并反回结果 -> 退出sudo返回普通用户shell环境。
其中步骤2检查:时间戳默认从上一次执行sudo命令5分钟后过期 -> 过期了需要输入当前用户的密码 -> 检查/etc/sudoers配置文件是否有sudo权限,没有权限就退出sudo。
SUDO配置不当
find命令获取root权限
各类命令特殊权限利用方式很多,例如:
zip:
-T 表示测试test.zip的完整性
--unzip-command 与-T 一起使用,可以指定自定义命令用于解压test.zip
tar:
--checkpoint-action选项是提权点,可以自定义需要执行的动作
nmap:
低版本的nmap3.x 有interactive模式,且设置了suid,这个时候可以进入交互模式 执行!sh 命令即可轻松完成提权。
more:
CVE-2021-3156提权
护网提权常用!
Linux安全工具sudo被发现严重的基于堆缓冲区溢出漏洞。利用这一漏洞,攻击者无需知道用户密码,一样可以获得root权限,此漏洞已分配为CVE-2021-3156
当这类Unix的操作系统上执行命令时,非root用户可以使用sudo命令来以root用户身份执行命令。由于sudo错误地在参数中转义了反斜杠导致堆缓冲区溢出,从而允许任何本地用户(无论是否在sudoers文件中)获得root权限,无需进行身份验证,且攻击者不需要知道用户密码。
执行下面的命令,如果观察到进程崩溃的提示,说明存在漏洞
适用版本:
· CentOs 8
· Ubuntu >= 17.10
· Debian 10
受影响版本:
Sudo 1.8.2 – 1.8.31p2
Sudo 1.9.0 – 1.9.5p1
https://github.com/worawit/CVE-2021-3156
如果存在漏洞,但是无法提权,是由于不同系统、不同 libc 版本、不同的 sudo 版本的堆空间分配顺序或者大小不一样,需要手动调试修改 exp
Last updated