🐧Linux - Dirty Pipe
Dirty Pipe
Una vulnerabilidad en el kernel de Linux, denominada Dirty Pipe ( CVE-2022-0847 ), permite la escritura no autorizada en archivos de usuarios root en Linux. Técnicamente, la vulnerabilidad es similar a la vulnerabilidad Dirty Cow descubierta en 2016. Todos los kernels desde la versión 5.8
hasta 5.17
están afectados y son vulnerables a esta vulnerabilidad.
En términos simples, esta vulnerabilidad permite a un usuario escribir en archivos arbitrarios siempre que tenga acceso de lectura a dichos archivos. También es interesante señalar que los teléfonos Android también se ven afectados. Las aplicaciones de Android se ejecutan con derechos de usuario, por lo que una aplicación maliciosa o comprometida podría tomar el control del teléfono.
Esta vulnerabilidad se basa en tuberías o pipes (de ahí su nombre). Las tuberías son un mecanismo de comunicación unidireccional entre procesos que son especialmente populares en los sistemas Unix. Por ejemplo, podríamos editar el archivo /etc/passwd
y eliminar la solicitud de contraseña para el usuario root. Esto nos permitiría iniciar sesión con el comando su
sin la solicitud de contraseña.
Para explotar esta vulnerabilidad, necesitamos descargar un PoC y compilarlo en el propio sistema de destino o en una copia que hayamos hecho.
Importante: Debemos compilar siempre los ejecutables en LA MÁQUINA OBJETIVO
1. Descargar Exploit de Dirty Pipe
Después de compilar el código, tenemos dos exploits diferentes disponibles. La primera versión del exploit ( exploit-1
) modifica el /etc/passwd
y nos da un mensaje con privilegios de root. Para esto, necesitamos verificar la versión del kernel y luego ejecutar el exploit.
2. Verificar la versión del kernel
3. Explotación
Con la ayuda de la segunda versión del exploit ( exploit-2
), podemos ejecutar binarios SUID con privilegios de root. Sin embargo, antes de poder hacerlo, primero debemos encontrar estos binarios SUID. Para ello, podemos utilizar el siguiente comando:
4. Encontrar binarios SUID
Luego podemos elegir un binario y especificar la ruta completa del binario como argumento para el exploit y ejecutarlo.
4. Explotación 2.0
Caso práctico
Aumente los privilegios y envíe el contenido de flag.txt como respuesta.
Al acceder por SSH no enocntramos archivos relevantes ni tenemos permisos de ejecución en la máquina:
Al verificar la versión del Kernel vemos que es vulnerable a Dirty Pipe, ya que todos los kernels desde la versión 5.8
hasta 5.17
están afectados y son vulnerables a esta vulnerabilidad.:
Como la máquina objetivo no tiene conectividad a internet, vamos a descargarnos el exploit en local, enviarlo a la máquina y compilarlo:
Exploit 1
Exploit 2
Con la ayuda de la segunda versión del exploit ( exploit-2
), podemos ejecutar binarios SUID con privilegios de root. Sin embargo, antes de poder hacerlo, primero debemos encontrar estos binarios SUID. Para ello, podemos utilizar el siguiente comando:
Última actualización