Sploitus

Exploit for CVE-2024-0582

kitploit · 2026-08-27

Exploit Code

MARKDOWN64 lines
## 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