Sploitus

Exploit for CTF

kitploit · 2026-08-27

Exploit Code

MARKDOWN79 lines
## 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`.