## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-JUSTINYE377-CTF-CVE-2022-0847
# Развертывание Dirty Pipe
Для этого задания вам нужно перезаписать файл "cat.txt", доступный только для чтения, с помощью эксплойта CVE-2022-0847. Существует множество способов сделать это с помощью эксплойта.
## Зависимости
* Ядро Linux версии 5.8 или новее (уязвимое)
* gcc (GNU Compiler Collection) для компиляции кода эксплойта
## Первоначальная настройка
1. **Настройка уязвимого окружения:**
* Для пользователей Linux:
* Используйте дистрибутив Linux с версией ядра 5.8 или новее, но ниже исправленных версий:
* Исправленные версии включают 5.16.11, 5.15.25 и 5.10.102.
* Проверьте версию ядра в вашей системе, выполнив: uname -r
* Если ваше ядро уже исправлено, возможно, потребуется откатить версию или использовать другую установку Linux, соответствующую критериям уязвимости.
* Для пользователей Windows:
* Установите виртуальную машину:
* Загрузите и установите виртуальную машину, например Oracle VM VirtualBox или VMware.
* Загрузите уязвимый дистрибутив Linux:
* Посетите архивы Kali Linux, чтобы загрузить более старую версию Kali Linux.
* Рекомендуемые версии включают любой выпуск с ядром 5.8–5.15 (например, Kali 2021.1).
* Кроме того, подойдут другие дистрибутивы Linux с соответствующими версиями ядра (например, более старые версии Ubuntu или Debian).
* Настройте виртуальную машину:
* Создайте новую виртуальную машину в VirtualBox:
* Выделите не менее 2 ГБ ОЗУ и 10 ГБ дискового пространства.
* Используйте загруженный ISO-файл для установки дистрибутива Linux.
* После установки проверьте версию ядра, выполнив: uname -r
* Установите необходимые инструменты:
* После настройки окружения убедитесь, что установлены следующие инструменты:
* gcc: требуется для компиляции кода эксплойта.
* make: для сборки проектов при необходимости.
* Обновите менеджер пакетов и установите инструменты: sudo apt update sudo apt install gcc make -y
## Запуск задания
1. **Запуск:** Обязательно проверьте версию ядра! Используйте эту ссылку GitHub (https://github.com/basharkey/CVE-2022-0847-dirty-pipe-checker.git)
Убедитесь, что файл `cat.txt` доступен только для чтения.
Ограничения: атакующий должен иметь права на чтение (поскольку ему нужно выполнить splice() страницы в канал) смещение не должно находиться на границе страницы (поскольку хотя бы один байт этой страницы должен быть передан в канал через splice()) запись не должна пересекать границу страницы (поскольку для остальной части был бы создан новый анонимный буфер) файл не может быть изменён в размере (поскольку канал имеет собственное управление заполнением страниц и не сообщает кэшу страниц, сколько данных было добавлено)
2. **Развертывание эксплойта:**
* Создайте канал.
* Заполните канал произвольными данными (чтобы установить флаг PIPE_BUF_FLAG_CAN_MERGE во всех записях кольца).
* Опустошите канал (оставив флаг установленным во всех экземплярах struct pipe_buffer в кольце struct pipe_inode_info).
* Выполните splice данных из целевого файла (открытого с O_RDONLY) в канал, начиная непосредственно перед целевым смещением.
* Запишите произвольные данные в канал; эти данные перезапишут кэшированную страницу файла вместо создания нового анонимного экземпляра struct pipe_buffer, поскольку установлен флаг PIPE_BUF_FLAG_CAN_MERGE.
* Перезапишите `cat.txt`, измените `I'm a cat` `1444` на `I'm a dog` `2025`
* Используйте check_cat.sh, чтобы проверить, сработало ли это chmod +x check_cat.sh ./check_cat.sh
## Повторное создание задания
Используйте следующее chmod +x cat_generate.sh ./cat_generate.sh
## Публикация задания
Подсказки находятся в `hints.txt`.