## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-KUZEYARDABULUT-CVE-2024-0582
## Введение
Этот эксплойт реализует атаку **Dirty Cred** для получения несанкционированного доступа на запись к `/etc/passwd`. В отличие от многих подобных эксплойтов, которые создают множество страниц или агрессивно распыляют файловые дескрипторы, данный подход использует более целенаправленный путь для повреждения необходимых структур ядра.
## Поток эксплойта (общий уровень)
* **Установка привязки к ЦП и увеличение лимита FD**
Обеспечивает стабильную производительность и достаточное количество файловых дескрипторов для распыления.
* **Инициализация io_uring**
Создает экземпляр io_uring и регистрирует кольцевой буфер для использования памяти ядра.
* **Отмена регистрации кольцевого буфера**
Запускает уязвимость, оставляя структуры данных ядра в состоянии, пригодном для эксплуатации.
* **Распыление файловых дескрипторов**
Открывает множество FD к `/etc/passwd`, надеясь повредить нужный объект ядра.
* **Изменение режима файла**
Повреждает флаги _f_mode_ , чтобы `/etc/passwd` стал доступен для записи.
* **Запись бэкдор-записи**
Вставляет `evil::0:0:root:/root:/bin/bash` в `/etc/passwd`.
## Требования
* **Ядро Linux** с уязвимой реализацией `io_uring` (протестировано на ядре с ошибкой **CVE-2024-0582**).
* **Инструментарий Rust** (при компиляции исходных файлов `.rs`).
* **EXT4_FOPS_OFFSET** :
Возможно, потребуется **скорректировать** значение `EXT4_FOPS_OFFSET` в `main.rs` (по умолчанию установлено `0x122b3c0`) в зависимости от версии Linux. Несоответствие может привести к сбою или неправильной работе эксплойта.
## Определение правильных значений смещения
Если ваше ядро экспортирует информацию о символах и у вас есть соответствующие разрешения (часто это ограничено на производственных системах), вы можете прочитать из `/proc/kallsyms`:
1. Получите адрес `_text`:
root@kitploit:~
grep " _text" /proc/kallsyms
Давайте назовем полученный адрес `TEXT_ADDR`.
2. Получите адрес `ext4_file_operations`:
root@kitploit:~
grep ext4_file_operations /proc/kallsyms
Давайте назовем полученный адрес `EXT4_FOPS_ADDR`.
3. Вычтите:
root@kitploit:~
EXT4_FOPS_OFFSET = EXT4_FOPS_ADDR – TEXT_ADDR