
Un sencillo laboratorio Docker y configuración de Exploit para CVE-2021-3156 - "Baron Samedit".
Este repositorio proporciona un entorno educativo autocontenido para comprender y explotar CVE-2021-3156, un desbordamiento de búfer en el montón en sudo que permite a cualquier usuario no privilegiado obtener privilegios de root en sistemas vulnerables (versiones de sudo anteriores a 1.9.5p2).
Este material es solo para formación e investigación de seguridad autorizada.
El uso no autorizado/antético contra sistemas que no poseas es ilegal.
Dockerfile - Construye un contenedor Ubuntu 20.04 con sudo 1.8.31 (vulnerable)exploit.c - Carga útil principal del exploit (adaptada para Ubuntu 20.04)shellcode.c - Constructor de librería compartida que genera un shell rootMakefile - Compila el exploit y la librería 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 del contenedor./home/exploit, que ya contiene los archivos fuente.docker run -it --rm --name baron_samedit_lab cve-2021-3156-lab
cd /home/exploit
./exploit
Si tiene éxito, deberías ver un prompt de shell root (#). El exploit sobrescribe la estructura service_user en el montón de sudo y la obliga a cargar la librería maliciosa libnss_x/x.so.2, cuyo constructor ejecuta el shellcode.
make clean && make
Esto crea:
exploit - el binario principal del exploitlibnss_x/x.so.2 - la librería compartida maliciosaCVE-2021-3156 es un desbordamiento en el montón en el manejo de argumentos de línea de comandos de sudoedit. Al proporcionar un búfer y variables de entorno especialmente diseñados, un atacante puede sobrescribir una estructura service_user en el montón. Esta estructura contiene un puntero a función que, al ser secuestrado, puede hacerse que apunte a una librería maliciosa cargada mediante el mecanismo NSS (Name Service Switch). El constructor de la librería ejecuta entonces código arbitrario con privilegios de root.
Este exploit:
buf) para desencadenar el desbordamiento.LC_MESSAGES, LC_TELEPHONE y LC_MEASUREMENT para dar forma al diseño del montón.service_user de files, reemplazando su nombre con una ruta a nuestra librería maliciosa (libnss_x/x.so.2).shellcode.c) ejecuta setuid(0), setgid(0) y genera un shell root.Para eliminar la imagen Docker:
docker rmi cve-2021-3156-lab
Este proyecto se proporciona únicamente con fines educativos. Úsalo bajo tu propio riesgo.