
Exploit de DirtyPipe (CVE-2022-0847) escrito en Rust
DESCARGO DE RESPONSABILIDAD
Este código es solo con fines educativos y de investigación.
No lo utilices en sistemas que no poseas o para los que no tengas permiso de prueba.
El autor no se hace responsable de ningún uso indebido, daño o consecuencia legal derivada del uso de este código.
Consulta el writeup de este exploit en mi blog. Esta es una implementación del exploit DirtyPipe (CVE-2022-0847) que escribí en Rust basándome en el writeup de Max Kellermann. El programa te permite sobrescribir archivos específicos o sobrescribir un binario SUID para escalar privilegios.
passwd) para obtener root/tmp antes de la explotaciónPrimero, crea un archivo de entrada. Los datos dentro de este archivo se usarán para sobrescribir el objetivo. Luego, simplemente ejecuta lo siguiente:
./dirtypipe_exploit -m overwrite -i input.txt -o target_file -b offset
Donde offset es el desplazamiento en bytes desde el cual comenzar a escribir en el archivo. El offset no debe estar en un límite de página y la escritura no puede cruzar un límite de página, debido a la naturaleza de la vulnerabilidad.
El modo SUID reemplazará un binario SUID específico con un payload ELF dado. El ELF suid se proporciona en la release de este repositorio y será utilizado por el exploit a menos que se especifique lo contrario en las opciones.
Adicionalmente, puedes generar tu propio payload, o modificar el payload usando el script gen_suid.py de pwntools y el archivo loader.asm. Esta opción se discutirá más abajo.
El exploit establece el objetivo como /usr/bin/passwd por defecto.
Ejecuta lo siguiente para reemplazar /usr/bin/passwd con el payload proporcionado (genera un shell como root):
./dirtypipe_exploit -m suid
Luego ejecuta /usr/bin/passwd para obtener un shell de root.
Para generar tu propio payload, sigue estos pasos:
gen_suid.py, que usa pwntools para generar un payload (shellcode.bin) que inicia un shell de root. Modifícalo según consideres.nasm -f bin -o [NOMBRE_DEL_PAYLOAD] loader.asm. Esto convertirá el archivo shellcode.bin en un ejecutable../dirtypipe_exploit -m suid -i [NOMBRE_DEL_PAYLOAD] -o [ARCHIVO_OBJETIVO].Agradecimientos al autor de STALKR'S BLOG por la cabecera ELF Tiny de 64 bits (aquí).