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

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

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

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

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

Категории

Все категории
Loading categories
cve-2016-0728-testbed — Тестовая среда для CVE-2016-0728, ошибка утечки/переполнения refcount в Linux | Kitploit
Инструменты/GitHubGitHub/neuschaefer/cve-2016-0728-testbed
Анализ уязвимостейЭксплуатацияОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubneuschaefer/cve-2016-0728-testbed

cve-2016-0728-testbed

Тестовая среда для CVE-2016-0728, ошибка утечки/переполнения refcount в Linux

Репозиторий

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
5110 лет назадЕщё не проверено

Тестовый стенд CVE-2016-0728

Этот репозиторий содержит тестовую программу для CVE-2016-0728, ошибки утечки счётчика ссылок и переполнения в Linux, приводящей к use-after-free.

Уязвимость была найдена и описана компанией Perception Point. Я с ними не связан.

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

root@kitploit:~
Welcome to the CVE-2016-0728 testbed
sizeof(struct msg_msg) == 0x30, sizeof(struct key) == 0xb8

PID: 27673, UID: (1000/1000)
Keyring: 1b66e5d6, "test-1a328d6e"
Usage:   1
Press a key: (f)ork (i)ncref (a)uto-incref (r)evoke (h)eap-spray (s)hell (q)uit

В моей тестовой системе root-оболочку можно было получить следующим образом:

  1. Доведите счётчик ссылок до -2; если увеличивать его слишком часто, вы, скорее всего, вызовете крах ядра.
  2. Выполните fork дважды для переполнения, чтобы сборщик мусора ключей освободил связку ключей.
  3. Заспамьте кучу поддельными связками ключей.
  4. Вызовите revoke.
  5. execl("/bin/sh", "sh", NULL)

Я обнаружил, что полезно запускать watch -n0.1 cat /proc/keys, чтобы видеть, что происходит.

Переносимость

Этот код тестировался только на x86-64, но он должен работать и на других архитектурах, так как я не использовал магические смещения, а скопировал определения структур из заголовков Linux и использовал sizeof (за исключением того, что я жёстко задал адреса prepare_kernel_cred и commit_creds).

Скачать инструмент