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

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

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

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

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

Категории

Все категории
Loading categories
cve-2024-58239 — Эксплойт для подсистемы TLS ядра Linux для CVE-2024-58239, достигающий повышения привилегий через уязвимость двойного освобождения в tcp_rcv_state_process. Включает архитектуру клиент-сервер и скрипты локального тестирования. | Kitploit
Инструменты/GitHubGitHub/khoatran107/cve-2024-58239
Анализ уязвимостейЭксплуатацияCTFОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubkhoatran107/cve-2024-58239

cve-2024-58239

Эксплойт для подсистемы TLS ядра Linux для CVE-2024-58239, достигающий повышения привилегий через уязвимость двойного освобождения в tcp_rcv_state_process. Включает архитектуру клиент-сервер и скрипты локального тестирования.

Репозиторий
4811 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2024-58239 mitigation exploit

Это мой первый 1-day эксплойт.

Патч: tls: stop recv() if initial process_rx_list gave us non-DATA

Я увидел exp407 на kernelCTF spreadsheet и попытался воспроизвести эксплойт.

Мне удалось запустить эксплойт в среде kernelCTF и получить флаг: image

Позже я напишу подробное описание (write-up).

Лог эксплойта довольно длинный, из-за предупреждения ядра (kernel WARNING) посередине. Однако предупреждение — это не ошибка, и оно не убивает мой эксплойт ;) image

Структура папок

Я удалил многие тяжёлые файлы из этой папки.

  • ./rootfs_v3.img
  • ./ramdisk_v1.img
  • ./releases/mitigation-v4-6.6/bzImage
  • ./releases/mitigation-v4-6.6/vmlinux

Первые 3 файла можно получить, запустив original local_runner.sh

Для четвёртого файла и исходного кода вы можете подключиться к серверу kernelCTF и получить ссылки для скачивания.

Но для вашего удобства вот информация об экземпляре mitigation-v4-6.6:

Kernel image (bzImage): https://storage.googleapis.com/kernelctf-build/releases/mitigation-v4-6.6/bzImage
Kernel image (vmlinux): https://storage.googleapis.com/kernelctf-build/releases/mitigation-v4-6.6/vmlinux.gz
Kernel config: https://storage.googleapis.com/kernelctf-build/releases/mitigation-v4-6.6/.config
  -> derived from COS config: https://storage.googleapis.com/kernelctf-build/releases/mitigation-v4-6.6/lakitu_defconfig
Source code info: https://storage.googleapis.com/kernelctf-build/releases/mitigation-v4-6.6/COMMIT_INFO

Также команды для скачивания .img файлов:

wget https://storage.googleapis.com/kernelctf-build/files/rootfs_v3.img.gz
gzip -d rootfs_v3.img.gz
wget https://storage.googleapis.com/kernelctf-build/files/ramdisk_v1.img

Сборка эксплойта

cd ./exploit/mitigation-v4-6.6/
make

Запуск эксплойта

Этот эксплойт разделён на 2 части:

  • сервер, который нужно сначала запустить на VPS.
  • клиент, который запускается позже на целевой машине.

Сервер:

./server --port <port>

Клиент:

./client --ip <server_ip> --port <port>

Локальное тестирование

Я написал 2 скрипта для локального тестирования эксплойта:

test.py

Этот скрипт запускает сервер в фоне, а затем запускает клиент в QEMU VM.

Настройка

Сначала перейдите в exploit/mitigation-v4-6.6 и запустите HTTP-сервер на порту 3000, чтобы позже загрузить эксплойт в QEMU VM:

cd exploit/mitigation-v4-6.6
python3 -m http.server 3000

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

Затем в другом терминале запустите скрипт:

python3 test.py <your_ip> <port>
  • <your_ip> — это IP вашей сетевой карты. У меня вся система работает в WSL, я выполняю ip a и получаю IP интерфейса eth0 — 172.30.248.93:
➜  CVE-2024-58239 git:(main) ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 10.255.255.254/32 brd 10.255.255.254 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:22:a0:d1 brd ff:ff:ff:ff:ff:ff
    inet 172.30.248.93/20 brd 172.30.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe22:a0d1/64 scope link
       valid_lft forever preferred_lft forever
  • <port> — любой неиспользуемый порт на вашей локальной машине. Он используется для TLS-соединения между клиентом и сервером.

calc_AC_rate.py

Этот скрипт запускает эксплойт заданное количество раз и измеряет частоту успеха.

Настройка

Как и для test.py, перейдите в exploit/mitigation-v4-6.6 и запустите HTTP-сервер на порту 3000 для загрузки эксплойта в QEMU VM:

cd exploit/mitigation-v4-6.6
python3 -m http.server 3000

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

python3 calc_AC_rate.py <your_ip> <port> <number_of_time_to_run>

Например, в моём WSL я запускаю так: python3 calc_AC_rate.py 172.30.248.93 1118 100.

Частота успеха

Я всё ещё работаю над частотой успеха, так как сейчас она нестабильна.

Я запустил calc_AC_rate.py для тестирования эксплойта 100 раз, результат — 50/100.

При неудачных попытках возникает common_interrupt, который запускает наивное обнаружение двойного освобождения (double free) в slab-аллокаторе ядра, как показано в этом backtrace.

Я найду способ отключить это.

[    4.050330]  ? die+0x32/0x80
[    4.050809]  ? do_trap+0xd6/0x100
[    4.051365]  ? __slab_free+0x16c/0x380
[    4.052198]  ? do_error_trap+0x6a/0x90
[    4.052767]  ? __slab_free+0x16c/0x380
[    4.053350]  ? exc_invalid_op+0x4c/0x60
[    4.053916]  ? __slab_free+0x16c/0x380
[    4.055031]  ? asm_exc_invalid_op+0x16/0x20
[    4.055675]  ? tcp_rcv_state_process+0x791/0xef0
[    4.056527]  ? __slab_free+0x16c/0x380
[    4.057097]  ? lock_timer_base+0x61/0x80
[    4.057795]  ? tcp_get_metrics+0x142/0x380
[    4.058560]  ? tcp_rcv_state_process+0x791/0xef0
[    4.059265]  kmem_cache_free+0x599/0x5e0
[    4.059915]  tcp_rcv_state_process+0x791/0xef0
[    4.060918]  ? security_sock_rcv_skb+0x31/0x50
[    4.061857]  ? sk_filter_trim_cap+0x11a/0x290
[    4.062558]  tcp_v4_do_rcv+0xcd/0x280
[    4.063281]  tcp_v4_rcv+0xf81/0x1010
[    4.063832]  ? raw_local_deliver+0xcd/0x250
[    4.064668]  ip_protocol_deliver_rcu+0x32/0x320
[    4.065355]  ip_local_deliver_finish+0x7a/0xa0
[    4.066455]  ip_sublist_rcv_finish+0x7e/0x90
[    4.067231]  ip_sublist_rcv+0x1e1/0x220
[    4.067919]  ? __netif_receive_skb_core.constprop.0+0xbf/0x1080
[    4.068822]  ip_list_rcv+0x139/0x170
[    4.069362]  __netif_receive_skb_list_core+0x29d/0x2c0
[    4.070173]  ? __pfx_csum_block_add_ext+0x10/0x10
[    4.071054]  netif_receive_skb_list_internal+0x1e1/0x310
[    4.072068]  napi_complete_done+0x6e/0x1a0
[    4.072752]  virtnet_poll+0x40d/0x5a0
[    4.073313]  __napi_poll+0x28/0x1c0
[    4.073854]  net_rx_action+0x14c/0x2d0
[    4.074622]  ? vp_vring_interrupt+0x73/0x90
[    4.075746]  __do_softirq+0xf6/0x30f
[    4.076379]  __irq_exit_rcu+0x79/0xc0
[    4.077356]  common_interrupt+0xb9/0xd0
Скачать инструмент