Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Dirty-Pipe-Exploits — Exploits de la vulnerabilidad CVE-2022-0847 (Dirty Pipe). | Kitploit
Herramientas/GitHubGitHub/gustavo-nogueira/dirty-pipe-exploits
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHubgustavo-nogueira/dirty-pipe-exploits

Dirty-Pipe-Exploits

Exploits de la vulnerabilidad CVE-2022-0847 (Dirty Pipe).

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
212hace 3 añosAún no revisado

CVE-2022-0847 Exploits

Dirty Pipe

¿Qué es?

Divulgada el 7 de marzo de 2022 por Max Kellerman[2], la CVE-2022-0847 es una vulnerabilidad en el kernel de Linux (versiones entre la 5.8 y 5.16.11) que permite a los atacantes sobrescribir archivos de solo lectura o inmutables y aumentar sus privilegios en el sistema de la víctima. La CVE-2022-0847 fue apodada Dirty Pipe y tiene una puntuación CVSS de 7,8 (considerada alta).

¿Cómo funciona la explotación de la vulnerabilidad?

La vulnerabilidad Dirty Pipe se describe como una falla en la forma en que el atributo flags de la struct pipe_buffer[7] no contenía una inicialización adecuada en las funciones copy_page_to_iter_pipe y push_pipe del kernel de Linux y, por lo tanto, podía contener valores obsoletos. Una de las flags que se puede configurar en el atributo flags de la struct pipe_buffer es la flag llamada PIPE_BUF_FLAG_CAN_MERGE. Esta indica si se permite o no la fusión de más datos en el pipe_buffer. De esta forma, cuando los datos se copian a un pipe_buffer, se pueden agregar más datos al pipe_buffer si la página copiada tiene menos de 4096 bytes de tamaño.

Al inyectar PIPE_BUF_FLAG_CAN_MERGE en una referencia de caché de página, fue posible sobrescribir datos en el caché de página, simplemente escribiendo nuevos datos en el pipe preparado de manera especial (este proceso se describirá en los siguientes párrafos). De esta manera, un usuario local sin privilegios puede usar esta falla para sobrescribir/escribir en páginas del caché de página respaldadas por archivos de solo lectura y, así, aumentar sus privilegios en el sistema.

Dicho esto, para explotar la vulnerabilidad, se deben seguir los siguientes pasos:

  1. Crea un pipe.
  2. Llena el pipe con datos arbitrarios (para establecer la flag PIPE_BUF_FLAG_CAN_MERGE en todas las entradas del array circular).
  3. Vaciar el pipe (dejando la flag PIPE_BUF_FLAG_CAN_MERGE establecida en todas las instancias de struct pipe_buffer del array circular). Normalmente, la flag debería restablecerse. Sin embargo, la vulnerabilidad Dirty Pipe hace que la flag permanezca establecida como 1.
  4. Transfiere un archivo de solo lectura al pipe usando la syscall splice.
  5. Modifica el archivo de solo lectura. Como la llamada al sistema splice usa el método pass-by-reference (paso por referencia), el atacante puede sobrescribir el archivo debido a la flag PIPE_BUF_FLAG_CAN_MERGE.

Exploits

Compila todo con el siguiente comando:

root@kitploit:~
make

Exploit 1 - Sobrescribiendo Archivos de Solo Lectura

Ejecutando

root@kitploit:~
./exploit-1

Descripción

El exploit 1, presente en el archivo exploit-1.c del repositorio, consiste en sobrescribir la contraseña del usuario root presente en el archivo /etc/passwd (este archivo contiene información sobre la cuenta de usuario, como la contraseña cifrada) y, finalmente, proporcionar una terminal con acceso root. Para ello, fue necesario:

  1. Realizar una copia de seguridad del archivo /etc/passwd.
  2. Preparar el pipe (como se presentó en los pasos 1, 2 y 3 mencionados anteriormente) con la flag PIPE_BUF_FLAG_CAN_MERGE.
  3. Transferir el archivo /etc/passwd al pipe y sobrescribir el contenido de este archivo con una nueva contraseña de root conocida (como se presentó en los pasos 4 y 5 mencionados anteriormente).
  4. Crear una sesión como root a partir de la nueva contraseña definida.
  5. A continuación, la contraseña se restablece al valor original a partir de la copia de seguridad, sin dejar rastros.
  6. Finalmente, aún con la sesión root establecida, se libera una terminal shell con acceso root.

Exploit 2 - Secuestro (Hijacking) de binarios SUID

Encontrando binarios SUID

root@kitploit:~
find / -perm -4000 2>/dev/null

Ejecutando

root@kitploit:~
./exploit-2 <path-of-suid-binary>

Descripción

El exploit 2, presente en el archivo exploit-2.c del repositorio, consiste en sobrescribir y secuestrar un binario SUID (este tipo de ataque se informó en la sección 3.5.2) y, finalmente, proporcionar una terminal con acceso root. Para ello, fue necesario:

  1. Preparar un código ejecutable ELF (Executable and Linking Format) que se utilizará para sobrescribir el binario SUID recibido como parámetro. En el exploit, el ejecutable ELF utilizado crea un nuevo archivo ejecutable (/tmp/sh), que a su vez crea una terminal shell con acceso root.
  2. Recibir el path de un binario SUID como parámetro.
  3. Realizar una copia de seguridad del binario recibido.
  4. Preparar el pipe (como se presentó en los pasos 1, 2 y 3 mencionados anteriormente) con la flag PIPE_BUF_FLAG_CAN_MERGE.
  5. Transferir el binario recibido al pipe y sobrescribir el contenido de este archivo con el ejecutable ELF comentado en el paso 1 (como se presentó en los pasos 4 y 5 mencionados anteriormente).
  6. A continuación, el binario recibido se restaura a su contenido original a partir de la copia de seguridad, sin dejar rastros.
  7. Finalmente, se ejecuta el archivo ejecutable /tmp/sh mencionado en el paso 1, abriendo así un nuevo shell con acceso root.

Exploit 3 - Adición de clave para Acceso Remoto

Ejecutando

root@kitploit:~
./exploit-3

Descripción

El exploit 3, presente en el archivo exploit-3.c del repositorio, utiliza los mismos pasos que el exploit 1 para obtener acceso a la shell root. La diferencia es que el exploit 3, después de obtener acceso a la shell root, carga una clave pública SSH (Secure Shell) del atacante en el archivo /root/.ssh/authorized_keys y crea un túnel TCP (Transmission Control Protocol) para acceso remoto al SSH utilizando la plataforma Ngrok.

Referencias

[1] AHMED, Alexis. Privilege Escalation Techniques: Learn the art of exploiting Windows and Linux systems. Birmingham: Packt Publishing, octubre de 2021.

[2] KELLERMANN, Max. The Dirty Pipe Vulnerability. Disponible en: https://dirtypipe.cm4all.com/. Accedido el 23 de julio de 2022.

[3] Exploit Database. Disponible en: https://www.exploit-db.com/. Accedido el 03 de agosto de 2022.

[4] Traitor: Automatically exploit low-hanging fruit to pop a root shell. Disponible en: https://github.com/liamg/traitor. Accedido el 03 de agosto de 2022.

[5] PayloadsAllTheThings. Linux - Privilege Escalation. Disponible en: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Linux%20-%20Privilege%20Escalation.md#cve-2022-0847-dirtypipe. Accedido el 03 de agosto de 2022.

[6] Repositorio del Kernel de Linux - Struct pipe_inode_info. Disponible en: https://github.com/torvalds/linux/blob/v5.8/include/linux/pipe_fs_i.h#L76. Accedido el 03 de agosto de 2022.

[7] Repositorio del Kernel de Linux - Struct pipe_buffer. Disponible en: https://github.com/torvalds/linux/blob/v5.8/include/linux/pipe_fs_i.h#L26-L32. Accedido el 03 de agosto de 2022.

[8] ARNTZ, Pieter. Linux "Dirty Pipe" vulnerability gives unprivileged users root access. Malwarebytes Lab. Disponible en: https://www.malwarebytes.com/blog/news/2022/03/linux-dirty-pipe-vulnerability-gives-unprivileged-users-root-access. Accedido el 03 de agosto de 2022.

[9] Picus Security. Linux “Dirty Pipe” CVE-2022-0847 Vulnerability Exploitation Explained. Disponible en: https://www.picussecurity.com/resource/linux-dirty-pipe-cve-2022-0847-vulnerability-exploitation-explained. Accedido el 03 de agosto de 2022.

[10] Exploit Database - Local Privilege Escalation (Dirty Pipe). Disponible en: https://www.exploit-db.com/exploits/50808. Accedido el 03 de agosto de 2022.

Descargar herramienta