
Простая Docker-лаборатория и настройка эксплойта для CVE-2021-3156 — «Baron Samedit».
Этот репозиторий предоставляет самодостаточную образовательную среду для понимания и эксплуатации CVE-2021-3156, переполнения буфера в куче в sudo, которое позволяет любому непривилегированному пользователю получить права root на уязвимых системах (версии sudo до 1.9.5p2).
Данный материал предназначен только для авторизованного обучения и исследований в области безопасности.
Несанкционированное/неэтичное использование против систем, которые вам не принадлежат, является незаконным.
Dockerfile — собирает контейнер Ubuntu 20.04 с sudo 1.8.31 (уязвимая версия)exploit.c — основной загрузчик эксплойта (адаптирован для Ubuntu 20.04)shellcode.c — конструктор разделяемой библиотеки, запускающий root-оболочку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-оболочки (#). Эксплойт перезаписывает структуру service_user в куче sudo и заставляет её загрузить вредоносную библиотеку libnss_x/x.so.2, конструктор которой выполняет shellcode.
make clean && make
Будут созданы:
exploit — основной бинарник эксплойтаlibnss_x/x.so.2 — вредоносная разделяемая библиотекаCVE-2021-3156 — это переполнение кучи при обработке аргументов командной строки в sudoedit. Подавая специально сформированный буфер и переменные окружения, атакующий может перезаписать структуру service_user в куче. Эта структура содержит указатель на функцию, который при перехвате можно направить на загрузку вредоносной библиотеки через механизм NSS (Name Service Switch). Конструктор библиотеки затем выполняет произвольный код с правами root.
Данный эксплойт:
buf) для запуска переполнения.LC_MESSAGES, LC_TELEPHONE и LC_MEASUREMENT для формирования нужной компоновки кучи.service_user для files, заменяя её имя на путь к нашей вредоносной библиотеке (libnss_x/x.so.2).shellcode.c) выполняет setuid(0), setgid(0) и запускает root-оболочку.Чтобы удалить Docker-образ:
docker rmi cve-2021-3156-lab
Этот проект предоставлен исключительно в образовательных целях. Используйте на свой страх и риск.