SecretJenkins
This content is not available in your language yet.
Introducción
Sección titulada «Introducción»En este artículo se documenta la resolución de la máquina virtual SecretJenkins, desarrollada por El Pingüino de Mario y clasificada con un nivel de dificultad fácil. Se abordan de manera estructurada las fases de reconocimiento, explotación y escalada de privilegios.
Información de la Máquina Virtual
Sección titulada «Información de la Máquina Virtual»- Nombre: SecretJenkins
- Autor: El Pingüino de Mario
- Dificultad: Fácil
- Fecha de creación: 11/05/2024
Paso 0: Instalación y Despliegue
Sección titulada «Paso 0: Instalación y Despliegue»-
Descargamos la máquina desde DockerLabs.
-
Descomprimimos el paquete:
Ventana de terminal unzip SecretJenkins.zip -
Ejecutamos el script de despliegue:
Ventana de terminal sudo bash auto_deplo.sh SecretJenkins.tar
Paso 1: Reconocimiento
Sección titulada «Paso 1: Reconocimiento»Identificación de la IP
Sección titulada «Identificación de la IP»Al iniciar la máquina, se muestra directamente su dirección IP, por lo que no es necesario realizar un escaneo ARP.

Preparamos el entorno de trabajo:
mkdir SecretJenkinscd SecretJenkinsmkt # Crea las carpetas: content, exploits, nmap, scriptsEscaneo de Puertos
Sección titulada «Escaneo de Puertos»Lanzamos un escaneo de puertos completo con Nmap:
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPortsExtraemos los puertos abiertos:
extractPorts allPorts
Puertos detectados:
- 22 (SSH)
- 8080 (HTTP)
Detección de Servicios
Sección titulada «Detección de Servicios»Realizamos un escaneo específico sobre los puertos identificados:
nmap -sCV -p22,8080 172.17.0.2 -oN targeted
Enumeración Web (Puerto 8080)
Sección titulada «Enumeración Web (Puerto 8080)»El servicio web expone una instancia de Jenkins. Se observan las siguientes rutas:

- Login: Formulario de autenticación de Jenkins.
- Builds: Página con información limitada, aunque revela la versión utilizada.

Paso 2: Explotación
Sección titulada «Paso 2: Explotación»La instancia de Jenkins se encuentra en la versión 2.441, la cual es vulnerable a lectura arbitraria de archivos.
Buscamos el exploit correspondiente en ExploitDB y lo utilizamos para leer archivos del sistema.

Se confirma el acceso a /etc/passwd, donde se identifican los usuarios bobby y pinguinito:

Luego accedemos también a /etc/shadow y copiamos su contenido. Usamos unshadow para generar un archivo que pueda ser crackeado:
unshadow passwd.txt shadow.txt > hash.txt
Crackeamos el hash con john:
john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
Obtenemos una contraseña válida para el usuario bobby e iniciamos sesión por SSH:
ssh bobby@172.17.0.2
Paso 3: Escalada de Privilegios
Sección titulada «Paso 3: Escalada de Privilegios»Verificación de permisos sudo
Sección titulada «Verificación de permisos sudo»Ya dentro como el usuario bobby, verificamos los privilegios:
sudo -l
Se permite ejecutar python3 como el usuario pinguinito.
Escalada de usuario con Python
Sección titulada «Escalada de usuario con Python»Usamos el siguiente comando para obtener una shell como pinguinito:
sudo -u pinguinito python3 -c 'import os; os.system("/bin/sh")'
Privilegios del usuario pinguinito
Sección titulada «Privilegios del usuario pinguinito»Al revisar sus permisos:
sudo -lDescubrimos que puede ejecutar /opt/script.py como root usando Python3. No tenemos permisos para modificar el archivo directamente, por lo que optamos por un ataque de secuestro de librería (Library Hijacking).

Creamos una librería falsa con el mismo nombre que una importada por el script original y la ubicamos en el mismo directorio. Luego ejecutamos el script con:
sudo python3 /opt/script.pyObtenemos una shell como root:

Conclusión
Sección titulada «Conclusión»SecretJenkins es una máquina que combina reconocimiento web, explotación de Jenkins y escalada de privilegios a través de técnicas clásicas como lectura de archivos, crackeo de contraseñas y Library Hijacking. Una práctica ideal para familiarizarse con vectores comunes en ambientes CI/CD comprometidos.