
Um laboratório Docker simples e configuração de Exploit para CVE-2021-3156 - "Baron Samedit".
Este repositório fornece um ambiente educacional autocontido para entender e explorar a CVE-2021-3156, um estouro de buffer baseado em heap no sudo que permite a qualquer utilizador não privilegiado obter privilégios de root em sistemas vulneráveis (versões do sudo anteriores a 1.9.5p2).
Este material é exclusivamente para treinamento e pesquisa de segurança autorizados.
O uso não autorizado/antiético contra sistemas que você não possui é ilegal.
Dockerfile - Constrói um contêiner Ubuntu 20.04 com sudo 1.8.31 (vulnerável)exploit.c - Payload principal do exploit (adaptado para Ubuntu 20.04)shellcode.c - Construtor de biblioteca compartilhada que gera um shell rootMakefile - Compila o exploit e a biblioteca maliciosagit clone https://github.com/Theleopard65/CVE-2021-3156-Baron-Samedit.git
cd CVE-2021-3156-Baron-Samedit
docker build -t cve-2021-3156-lab .
poc dentro do contêiner./home/exploit, que já contém os arquivos fonte.docker run -it --rm --name baron_samedit_lab cve-2021-3156-lab
cd /home/exploit
./exploit
Se bem-sucedido, você deverá ver um prompt de shell root (#). O exploit sobrescreve a struct service_user no heap do sudo e força o carregamento da biblioteca maliciosa libnss_x/x.so.2, cujo construtor executa o shellcode.
make clean && make
Isso cria:
exploit - o binário principal do exploitlibnss_x/x.so.2 - a biblioteca compartilhada maliciosaA CVE-2021-3156 é um estouro baseado em heap no tratamento de argumentos de linha de comando do sudoedit. Ao fornecer um buffer especialmente criado e variáveis de ambiente, um atacante pode sobrescrever uma struct service_user no heap. Essa struct contém um ponteiro de função que, quando sequestrado, pode ser feito para apontar para uma biblioteca maliciosa carregada através do mecanismo NSS (Name Service Switch). O construtor da biblioteca então executa código arbitrário com privilégios de root.
Este exploit:
buf) para desencadear o estouro.LC_MESSAGES, LC_TELEPHONE e LC_MEASUREMENT para moldar o layout do heap.service_user de files, substituindo seu nome por um caminho para nossa lib maliciosa (libnss_x/x.so.2).shellcode.c) executa setuid(0), setgid(0) e gera um shell root.Para remover a imagem Docker:
docker rmi cve-2021-3156-lab
Este projeto é fornecido apenas para fins educacionais. Use por sua própria conta e risco.