## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-MRCHUCU1-CVE-2022-0847-DOCKER
# Грязная труба (CVE-2022-0847): Практическая демонстрация эксплуатации в Docker
  
Этот репозиторий предоставляет самодостаточную интерактивную Docker-среду для безопасной демонстрации и анализа уязвимости повышения привилегий **«Dirty Pipe»**. Он предназначен как образовательный инструмент для специалистов по безопасности, чтобы понять механику критической эксплуатации на уровне ядра в контролируемых условиях.
* * *
## 1\. Объяснение уязвимости: Что такое Dirty Pipe?
Dirty Pipe — это критическая уязвимость, обнаруженная в ядре Linux (затрагивает версии с 5.8 и выше). Она позволяла локальному непривилегированному пользователю **перезаписывать данные в произвольных файлах, доступных только для чтения**.
Последствия серьезны: перезаписывая чувствительный файл, такой как `/etc/passwd` или SUID-бинарный файл, злоумышленник мог легко повысить свои привилегии до `root`, получив полный контроль над системой. Эта уязвимость была особенно опасна, поскольку она обходила стандартные проверки разрешений файлов — фундаментальный механизм безопасности в Linux.
## 2\. Архитектура проекта: Использование Docker для безопасной лаборатории
Этот проект использует Docker для создания безопасной, изолированной и намеренно уязвимой среды. Это позволяет любому изучать эксплойт без риска для хост-машины.
Ключевые компоненты:
* **`Dockerfile`** : Определяет план нашего уязвимого контейнера. Он использует старый базовый образ (`debian:bullseye-20210927-slim`), известный наличием ядра, уязвимого к Dirty Pipe, и автоматизирует процесс настройки.
* **`exploit.c`** : Код на C, реализующий логику эксплойта, основанный на оригинальном доказательстве концепции Макса Келлерманна.
* **`Makefile`** : Простой makefile для компиляции кода на C в исполняемый бинарный файл внутри контейнера.
* * *
## 3\. Практическая демонстрация: От пользователя к root
Это пошаговое руководство проведет вас через сборку среды и выполнение эксплойта.
**Предварительные требования:** У вас должен быть установлен и запущен **Docker**.
### Шаг 1: Клонирование репозитория
Откройте терминал и клонируйте этот проект.
root@kitploit:~
git clone https://github.com/mrchucu1/CVE-2022-0847-Docker.git
cd CVE-2022-0847-Docker
### Шаг 2: Сборка уязвимого Docker-образа
Используйте команду `docker build` для создания образа контейнера. `Dockerfile` обработает все зависимости и скомпилирует код эксплойта.
root@kitploit:~
docker build -t dirty-pipe-demo .
### Шаг 3: Запуск контейнера и выполнение эксплойта
Теперь запустите контейнер в интерактивном режиме. Флаг `--rm` гарантирует удаление контейнера при выходе, а `-it` предоставляет интерактивную оболочку.
root@kitploit:~
docker run --rm -it dirty-pipe-demo
Вы попадете в оболочку внутри контейнера под непривилегированным пользователем (`hacker@...:/$`).
Теперь выполните предварительно скомпилированный эксплойт:
root@kitploit:~
# Вы сейчас непривилегированный пользователь.
# Ваше приглашение выглядит так: hacker@<container_id>:/$
#
# Теперь запускаем эксплойт...
./exploit
**Успех!** Эксплойт перезаписывает SUID-бинарный файл, чтобы предоставить вам root-оболочку. Приглашение терминала изменится с `$` на `#`, что означает получение **прав root**.
root@kitploit:~
# Эксплойт выполнен успешно.
# Теперь у вас root-оболочка: # whoami
root
#
* * *
## 4\. Ключевые выводы и уроки по безопасности
Этот проект — не просто запуск скрипта; это практическая демонстрация критически важных принципов безопасности, актуальных для моей работы как инженера по облачной безопасности:
* **Эксплойты ядра обходят безопасность на уровне приложений:** Это показывает, что даже с идеальными разрешениями файлов уязвимость ядра может подорвать всю модель безопасности операционной системы, доказывая необходимость эшелонированной защиты (defense-in-depth).
* **Безопасность контейнеров — это безопасность хоста:** Это дает осязаемое доказательство того, что контейнеры используют ядро хоста. Эксплойт ядра, выполненный внутри контейнера, может привести к полному «выходу» и компрометации хост-машины. Это подчеркивает важность использования профилей seccomp, gVisor или оптимизированных для контейнеров ОС в production.
* **Критичность управления патчами:** Это наглядный пример того, почему своевременные обновления ядра являются обязательной практикой безопасности в любой производственной среде, особенно на хост-машинах контейнеров.
* **Понимание поверхности атаки:** Создавая среду для эксплуатации, я получил более глубокое понимание того, как атакующие анализируют системы и используют, казалось бы, незначительные ошибки в управлении памятью (например, каналы и кэш страниц) для полной компрометации системы.
* * *
## Отказ от ответственности
Этот проект и его код предназначены **только для образовательных и исследовательских целей**. Не пытайтесь использовать этот эксплойт в любой системе, на которую у вас нет явного разрешения.