CVE-2021-3156(Sudo Baron Samedit)
本仓库是针对 Linux x64 的 CVE-2021-3156 漏洞利用代码。相关技术分析文章请访问 https://datafarm-cybersecurity.medium.com/exploit-writeup-for-cve-2021-3156-sudo-baron-samedit-7a9a4282cb31
致谢:Qualys 的 Braon Samedit 提供的原始安全公告。
文件
针对带 tcache 的 glibc 的漏洞利用
- exploit_nss.py 自动检测所有需求以及 /etc/nsswitch.conf 中的条目数量
- exploit_nss_manual.py exploit_nss.py 的简化版本,便于理解漏洞利用原理
- exploit_timestamp_race.c 覆盖 def_timestamp 并利用竞态条件修改 /etc/passwd
针对不带 tcache 的 glibc 的漏洞利用
- exploit_defaults_mailer.py 该漏洞利用覆盖 struct defaults 以修改 mailer 二进制文件路径。它要求 sudo 在编译时未禁用 root mailer,例如 CentOS 6 和 7。
- exploit_userspec.py 该漏洞利用覆盖 struct userspec 以绕过身份验证并在 /etc/passwd 中添加新用户。仅支持 sudo 版本 1.8.9-1.8.23。
- exploit_cent7_userspec.py exploit_userspec.py 的简化版本,便于理解,但仅针对默认配置的 CentOS 7
- exploit_nss_d9.py 在 Debian 9 上覆盖 struct service_user,但仅支持默认的 /etc/nsswitch.conf
- exploit_nss_u16.py 在 Ubuntu 16.04 上覆盖 struct service_user,但仅支持默认的 /etc/nsswitch.conf
- exploit_nss_u14.py 在 Ubuntu 14.04 上覆盖 struct service_user,但仅支持默认的 /etc/nsswitch.conf
其他
- asm/ 用于嵌入 Python 漏洞利用脚本的 tinyelf 库和可执行文件
- gdb/ 用于调试 sudo 堆的脚本
选择漏洞利用方式
对于 glibc 支持并启用了 tcache 的 Linux 发行版(CentOS 8、Ubuntu >= 17.10、Debian 10):
- 首先尝试 exploit_nss.py
- 如果错误与 glibc tcache 无关,接下来可以尝试 exploit_timestamp_race.c
对于 glibc 不支持 tcache 的 Linux 发行版:
- 如果目标是 Debian 9、Ubuntu 16.04 或 Ubuntu 14.04,首先尝试针对特定版本的 exploit_nss_xxx.py
- 接下来,尝试 exploit_defaults_mailer.py。如果你知道目标 sudo 在编译时使用了 --disable-root-mailer,可以跳过此漏洞利用。该漏洞利用会尝试从 sudo 二进制文件中检查 root mailer 标志。但某些 Linux 发行版上 sudo 的权限为 4711 (-rws--x--x),无法在目标系统上进行检查。(已知可用的操作系统为 CentOS 6 和 7)
- 最后,尝试 exploit_userspec.py