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 — needrestart < 3.8 Escalade de privilèges locale via injection PYTHONPATH | Kitploit
Outils/GitHubGitHub/blueberryp1ll/cve-2024-48990
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'IntrusionRed Teaming
GitHubblueberryp1ll/cve-2024-48990

CVE-2024-48990

needrestart < 3.8 Escalade de privilèges locale via injection PYTHONPATH

Voir le dépôt
11il y a 6 moisPas 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 — needrestart Escalade de privilèges locale

Exploit d'escalade de privilèges locale ciblant needrestart < 3.8 sur les systèmes Ubuntu/Debian via l'injection de PYTHONPATH.

Présentation

needrestart est un utilitaire couramment installé sur les serveurs Ubuntu/Debian qui vérifie quels services doivent être redémarrés après des mises à niveau de bibliothèques. Il s'exécute en tant que root et est généralement déclenché automatiquement après les opérations apt ou invoqué directement via sudo.

Lors de la vérification des processus Python, needrestart ré-invoque l'interpréteur Python tout en héritant de l'environnement complet du processus à partir de /proc/<pid>/environ — y compris PYTHONPATH. Un utilisateur local non privilégié peut exploiter cela en :

  1. Définissant PYTHONPATH sur un répertoire contenant un paquet importlib malveillant
  2. Gardant un processus Python en cours d'exécution pour que needrestart le détecte lors de son analyse
  3. Attendant que needrestart s'exécute — il charge le importlib/__init__.py de l'attaquant en tant que root

Versions affectées

PaquetVulnérableCorrigé
needrestart< 3.8>= 3.8

Confirmé sur :

  • Ubuntu 22.04 LTS (Jammy) — needrestart 3.5-5ubuntu2.4
  • Ubuntu 24.04 LTS (Noble) — needrestart 3.6-7ubuntu4

Utilisation

root@kitploit:~
chmod +x exploit.sh
./exploit.sh

Ensuite, déclenchez needrestart depuis un autre terminal :

root@kitploit:~
# Si vous avez un accès sudo direct à needrestart :
sudo /usr/sbin/needrestart

# Ou déclenchez-le via apt (needrestart s'exécute comme hook post-apt) :
sudo apt update && sudo apt install --reinstall coreutils

Une fois que needrestart se déclenche, l'exploit crée un shell SUID dans /var/tmp/.rootshell et vous place automatiquement dans un shell root.

Si l'exécution automatique ne fonctionne pas, récupérez le shell manuellement :

root@kitploit:~
/var/tmp/.rootshell -p

Options

root@kitploit:~
Usage: ./exploit.sh [OPTIONS]

Options :
  -c <commande>    Commande shell personnalisée à exécuter en tant que root (par défaut : copier le binaire SUID)
  -w <secondes>    Temps d'attente maximum en secondes (par défaut : 300)
  -t               Mode déclenchement : tente de lancer needrestart via apt
  -n               Pas de nettoyage : conserve le répertoire de payload après exploitation
  -h               Affiche ce message d'aide

Exemples

root@kitploit:~
# Par défaut — crée une copie SUID de /bin/bash dans /var/tmp/.rootshell
./exploit.sh

# Déclenchement automatique de needrestart via apt (nécessite un accès sudo apt)
./exploit.sh -t

# Payload personnalisée : ajoute l'utilisateur courant au groupe sudo
./exploit.sh -c 'usermod -aG sudo targetuser'

# Payload personnalisée : lit un fichier restreint
./exploit.sh -c 'cat /root/flag.txt > /tmp/flag.txt && chmod 644 /tmp/flag.txt'

# Attente prolongée (10 minutes)
./exploit.sh -w 600

Fonctionnement

root@kitploit:~
┌───────────────────────────────────────────────────────────────┐
│  1. Crée /tmp/.nr_XXXX/importlib/__init__.py avec le payload │
│     qui exécute os.system() pour copier /bin/bash en binaire  │
│     SUID                                                     │
├───────────────────────────────────────────────────────────────┤
│  2. Lance un processus Python de longue durée avec            │
│     PYTHONPATH=/tmp/.nr_XXXX exporté dans son environnement  │
├───────────────────────────────────────────────────────────────┤
│  3. needrestart s'exécute (via sudo ou hook apt), analyse     │
│     /proc/*/environ, trouve le processus Python               │
├───────────────────────────────────────────────────────────────┤
│  4. needrestart ré-invoque python3 EN TANT QUE ROOT en       │
│     héritant du PYTHONPATH de l'attaquant → charge importlib │
│     malveillant                                              │
├───────────────────────────────────────────────────────────────┤
│  5. Le payload s'exécute en tant que root : cp /bin/bash +   │
│     chmod 4755 → l'attaquant lance /var/tmp/.rootshell -p    │
│     → shell root                                             │
└───────────────────────────────────────────────────────────────┘

Remarques

  • Le shell SUID est placé dans /var/tmp/ plutôt que /tmp/ car /tmp est souvent monté avec nosuid, ce qui supprime silencieusement le bit SUID.
  • Le importlib/__init__.py malveillant restaure le vrai importlib après exécution du payload en nettoyant sys.path et sys.modules, afin que needrestart ne plante pas visiblement.
  • Le processus Python leurre exécute un véritable fichier .py (pas un one-liner -c) pour une meilleure compatibilité avec l'analyse de l'interpréteur de needrestart.

Détection

Indices que cet exploit a été utilisé :

  • Binaires SUID inattendus dans /var/tmp/ ou /tmp/
  • Processus Python s'exécutant avec des valeurs PYTHONPATH inhabituelles pointant vers des répertoires temporaires
  • Répertoires correspondant à /tmp/.nr_* contenant un sous-répertoire importlib/

Atténuation

root@kitploit:~
# Mettez à jour needrestart vers la version corrigée
sudo apt update && sudo apt install needrestart

# Ou désactivez complètement l'analyse de l'interpréteur
echo "\$nrconf{interpscan} = 0;" | sudo tee /etc/needrestart/conf.d/no-interp.conf

Références

  • CVE-2024-48990
  • Avis Qualys — needrestart LPE
  • Avis de sécurité Ubuntu USN-7117-1

Avertissement

Cet outil est fourni à des fins de tests de sécurité autorisés et d'éducation uniquement. Utilisez-le uniquement sur des systèmes vous appartenant ou pour lesquels vous avez une autorisation écrite explicite. L'accès non autorisé à des systèmes informatiques est illégal. L'auteur décline toute responsabilité en cas d'utilisation abusive.

Licence

MIT

Télécharger l’outil