CVE-2021-3156 (Sudo Baron Samedit)
Этот репозиторий содержит эксплойт для CVE-2021-3156, нацеленный на Linux x64. Описание доступно по адресу https://datafarm-cybersecurity.medium.com/exploit-writeup-for-cve-2021-3156-sudo-baron-samedit-7a9a4282cb31
Авторство: Braon Samedit из Qualys за оригинальное уведомление.
Файлы
Эксплойты для glibc с tcache
- exploit_nss.py автоматически определяет все требования и количество записей в /etc/nsswitch.conf
- exploit_nss_manual.py упрощенная версия exploit_nss.py для лучшего понимания эксплойта
- exploit_timestamp_race.c перезаписывает def_timestamp и использует состояние гонки для изменения /etc/passwd
Эксплойты для glibc без tcache
- 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_usersec.py для понимания, но нацелена только на CentOS 7 с конфигурацией по умолчанию
- exploit_nss_d9.py перезаписывает struct service_user в Debian 9, но поддерживается только /etc/nsswitch.conf по умолчанию
- exploit_nss_u16.py перезаписывает struct service_user в Ubuntu 16.04, но поддерживается только /etc/nsswitch.conf по умолчанию
- exploit_nss_u14.py перезаписывает struct service_user в Ubuntu 14.04, но поддерживается только /etc/nsswitch.conf по умолчанию
Прочее
- asm/ библиотека tinyelf и исполняемый файл для встраивания в эксплойт на Python
- gdb/ скрипты, используемые для отладки кучи sudo
Выбор эксплойта
Для дистрибутивов Linux, в которых glibc поддерживает и включает tcache (CentOS 8, Ubuntu >= 17.10, Debian 10):
- сначала попробуйте exploit_nss.py
- Если ошибка не связана с tcache в glibc, затем можно попробовать exploit_timestamp_race.c
Для дистрибутивов Linux, в которых glibc не поддерживает tcache:
- если цель — Debian 9, Ubuntu 16.04 или Ubuntu 14.04, сначала попробуйте exploit_nss_xxx.py для соответствующей версии
- затем попробуйте exploit_defaults_mailer.py. Если вы знаете, что целевая sudo скомпилирована с флагом --disable-root-mailer, вы можете пропустить этот эксплойт. Эксплойт пытается проверить флаг root mailer из бинарного файла sudo. Однако разрешения sudo в некоторых дистрибутивах Linux — 4711 (-rws--x--x), что невозможно проверить в целевой системе. (Известные рабочие ОС: CentOS 6 и 7)
- наконец, попробуйте exploit_userspec.py