
🔄 Повышение привилегий Linux через need-restart (CVE-2024-48990). Автоматизация получения root. 💀
Этот скрипт эксплуатирует уязвимость CVE-2024-48990 в утилите needrestart Linux путем перехвата пути библиотек (PYTHONPATH hijacking). В отличие от исходного вектора, этот метод использует исключительно Python, что позволяет обойти требование наличия компиляторов, таких как gcc, на целевой машине.
Структура каталогов: Создается каталог /tmp/malicious/importlib. Это имитирует структуру стандартной библиотеки Python.
Вредоносная нагрузка (importlib/__init__.py):
Содержит код, который будет выполнен с повышенными привилегиями. При загрузке он проверяет, является ли текущий пользователь root (UID 0). Если да, то копирует двоичный файл /bin/bash в /tmp/poc и устанавливает бит SUID (chmod 4755). Это создает бэкдор, позволяющий любому пользователю повысить привилегии.
Процесс-приманка (e.py):
Это безобидный скрипт, который выполняется в бесконечном цикле. Он выполняет две функции:
needrestart мог его перехватить./tmp. Как только он обнаруживает создание файла /tmp/poc, он автоматически запускает его с флагом -p (чтобы не терять привилегии root), предоставляя интерактивную оболочку.Перехват переменных окружения:
При запуске приманки с PYTHONPATH="$PWD" python3 e.py мы изменяем поведение Python. Мы заставляем любой импорт сначала искать в /tmp/malicious, а не в легитимных системных путях.
Активация и повышение привилегий (needrestart):
Когда needrestart запускается с привилегиями администратора (вручную или по запланированной задаче системы), он сканирует активные процессы. Дойдя до нашего e.py, он извлекает его переменные окружения и запускает собственный процесс Python для его анализа. Унаследовав вредоносный PYTHONPATH, root-процесс needrestart импортирует нашу поддельную библиотеку importlib и выполняет нагрузку, предоставляя полный контроль над машиной.