一个用于 CVE-2021-3156 - "Baron Samedit" 的简单 Docker 实验室与漏洞利用环境。
该仓库提供了一个自包含的教学环境,用于理解和利用 CVE-2021-3156,这是 sudo 中一个基于堆的缓冲区溢出漏洞,允许任何非特权用户在受影响系统(sudo 版本低于 1.9.5p2)上获取 root 权限。
本材料仅用于授权的安全培训与研究。
在未经授权的系统上使用本材料进行非道德操作是违法的。
Dockerfile - 构建带 sudo 1.8.31(含漏洞)的 Ubuntu 20.04 容器exploit.c - 主要利用载荷(针对 Ubuntu 20.04 适配)shellcode.c - 生成 root shell 的共享库构造函数Makefile - 编译利用程序和恶意库git clone https://github.com/Theleopard65/CVE-2021-3156-Baron-Samedit.git
cd CVE-2021-3156-Baron-Samedit
docker build -t cve-2021-3156-lab .
poc。/home/exploit,其中已包含源文件。docker run -it --rm --name baron_samedit_lab cve-2021-3156-lab
cd /home/exploit
./exploit
如果成功,您将看到 root shell 提示符(#)。该利用程序覆盖 sudo 堆中的 service_user 结构体,强制其加载恶意库 libnss_x/x.so.2,该库的构造函数执行 shellcode。
make clean && make
这将生成:
exploit - 主利用二进制文件libnss_x/x.so.2 - 恶意共享库CVE-2021-3156 是 sudoedit 命令行参数处理中的一个堆溢出漏洞。通过提供精心构造的缓冲区和环境变量,攻击者可以覆盖堆上的 service_user 结构体。该结构体包含一个函数指针,一旦被劫持,可以通过 NSS(名称服务切换)机制加载恶意库。该库的构造函数随后以 root 身份执行任意代码。
该利用程序:
buf)以触发溢出。LC_MESSAGES、LC_TELEPHONE 和 LC_MEASUREMENT 环境变量来塑造堆布局。files 服务用户结构体,将其名称替换为指向恶意库的路径(libnss_x/x.so.2)。shellcode.c)执行 setuid(0)、setgid(0),并生成一个 root shell。移除 Docker 镜像:
docker rmi cve-2021-3156-lab
本项目仅用于教育目的。使用风险自负。