
Exploit de Docker
Este repositorio proporciona un entorno Docker interactivo y autónomo para demostrar y analizar de forma segura la vulnerabilidad de escalada de privilegios "Dirty Pipe". Está diseñado como una herramienta educativa para que los profesionales de la seguridad comprendan los mecanismos de un exploit crítico a nivel de kernel dentro de un entorno controlado.
Dirty Pipe fue una vulnerabilidad crítica descubierta en el kernel de Linux (que afecta a las versiones desde la 5.8 en adelante). Permitía a un usuario local sin privilegios sobrescribir datos en archivos arbitrarios de solo lectura.
El impacto es grave: al sobrescribir un archivo sensible como /etc/passwd o un binario SUID, un atacante podía escalar fácilmente sus privilegios a root, obteniendo el control total del sistema. Esta vulnerabilidad era especialmente peligrosa porque eludía las comprobaciones estándar de permisos de archivos, un control de seguridad fundamental en Linux.
Este proyecto aprovecha Docker para crear un entorno seguro, aislado e intencionalmente vulnerable. Esto permite que cualquiera pueda estudiar el exploit sin arriesgar su máquina host.
Los componentes clave son:
Dockerfile: Define el plano de nuestro contenedor vulnerable. Utiliza una imagen base antigua (debian:bullseye-20210927-slim) conocida por tener un kernel susceptible a Dirty Pipe, y automatiza el proceso de configuración.exploit.c: El código C que implementa la lógica del exploit, basado en la prueba de concepto original de Max Kellermann.Makefile: Un makefile simple para compilar el código C en un binario ejecutable dentro del contenedor.Este tutorial te guiará a través de la construcción del entorno y la ejecución del exploit.
Requisitos previos: Debes tener Docker instalado y en funcionamiento en tu sistema.
Abre tu terminal y clona este proyecto.
git clone https://github.com/mrchucu1/CVE-2022-0847-Docker.git
cd CVE-2022-0847-Docker
Usa el comando docker build para crear la imagen del contenedor. El Dockerfile se encargará de todas las dependencias y compilará el código del exploit.
docker build -t dirty-pipe-demo .
Ahora, ejecuta el contenedor de forma interactiva. La bandera --rm garantiza que el contenedor se elimine al salir, y -it te proporciona un shell interactivo.
docker run --rm -it dirty-pipe-demo
Serás llevado a un shell dentro del contenedor como usuario sin privilegios (hacker@...:/$).
Ahora, ejecuta el exploit precompilado:
# You are currently an unprivileged user.
# Your prompt looks like this: hacker@<container_id>:/$
#
# Now run the exploit...
./exploit
¡Éxito! El exploit sobrescribe un binario SUID para otorgarte un shell root. El prompt de tu terminal cambiará de $ a #, lo que indica que ahora tienes privilegios de root.
# The exploit has succeeded.
# Your prompt is now a root shell: # whoami
root
#
Este proyecto es más que simplemente ejecutar un script; es una demostración práctica de principios de seguridad críticos relevantes para mi trabajo como Ingeniero de Seguridad en la Nube:
Este proyecto y su código están destinados únicamente a fines educativos y de investigación. No intentes usar este exploit en ningún sistema para el cual no tengas permiso explícito y autorizado.