
Эксплойт Docker
Этот репозиторий предоставляет самодостаточную интерактивную Docker-среду для безопасной демонстрации и анализа уязвимости повышения привилегий «Dirty Pipe». Он предназначен как образовательный инструмент для специалистов по безопасности, чтобы понять механику критической эксплуатации на уровне ядра в контролируемых условиях.
Dirty Pipe — это критическая уязвимость, обнаруженная в ядре Linux (затрагивает версии с 5.8 и выше). Она позволяла локальному непривилегированному пользователю перезаписывать данные в произвольных файлах, доступных только для чтения.
Последствия серьезны: перезаписывая чувствительный файл, такой как /etc/passwd или SUID-бинарный файл, злоумышленник мог легко повысить свои привилегии до root, получив полный контроль над системой. Эта уязвимость была особенно опасна, поскольку она обходила стандартные проверки разрешений файлов — фундаментальный механизм безопасности в Linux.
Этот проект использует Docker для создания безопасной, изолированной и намеренно уязвимой среды. Это позволяет любому изучать эксплойт без риска для хост-машины.
Ключевые компоненты:
Dockerfile: Определяет план нашего уязвимого контейнера. Он использует старый базовый образ (debian:bullseye-20210927-slim), известный наличием ядра, уязвимого к Dirty Pipe, и автоматизирует процесс настройки.exploit.c: Код на C, реализующий логику эксплойта, основанный на оригинальном доказательстве концепции Макса Келлерманна.Makefile: Простой makefile для компиляции кода на C в исполняемый бинарный файл внутри контейнера.Это пошаговое руководство проведет вас через сборку среды и выполнение эксплойта.
Предварительные требования: У вас должен быть установлен и запущен Docker.
Откройте терминал и клонируйте этот проект.
git clone https://github.com/mrchucu1/CVE-2022-0847-Docker.git
cd CVE-2022-0847-Docker
Используйте команду docker build для создания образа контейнера. Dockerfile обработает все зависимости и скомпилирует код эксплойта.
docker build -t dirty-pipe-demo .
Теперь запустите контейнер в интерактивном режиме. Флаг --rm гарантирует удаление контейнера при выходе, а -it предоставляет интерактивную оболочку.
docker run --rm -it dirty-pipe-demo
Вы попадете в оболочку внутри контейнера под непривилегированным пользователем (hacker@...:/$).
Теперь выполните предварительно скомпилированный эксплойт:
# Вы сейчас непривилегированный пользователь.
# Ваше приглашение выглядит так: hacker@<container_id>:/$
#
# Теперь запускаем эксплойт...
./exploit
Успех! Эксплойт перезаписывает SUID-бинарный файл, чтобы предоставить вам root-оболочку. Приглашение терминала изменится с $ на #, что означает получение прав root.
# Эксплойт выполнен успешно.
# Теперь у вас root-оболочка: # whoami
root
#
Этот проект — не просто запуск скрипта; это практическая демонстрация критически важных принципов безопасности, актуальных для моей работы как инженера по облачной безопасности:
Этот проект и его код предназначены только для образовательных и исследовательских целей. Не пытайтесь использовать этот эксплойт в любой системе, на которую у вас нет явного разрешения.